2015-02-11 39 views
0

我有一個來自SSIS腳本任務中本地文件夾的文件列表,我需要將它記錄到SQL表中。有沒有什麼方法可以直接從腳本任務中完成,或者可以將結果放入對象變量中,然後將其填充到SQL表中。我沒有選擇For Each Loop容器,因爲我覺得我可以從腳本任務記錄更多細節。將腳本任務中的文件列表記錄到SQL表

代碼:

   List<String> FileList = new List<string>(); 
       List<String> FileLoc = new List<string>(); 
       foreach (string dirpath in Directory.EnumerateDirectories("C:\\Program Files\"))      
       foreach (string path in Directory.EnumerateFiles(dirpath)) 
       { 
        FileList.Add(Path.GetFileName(path)); 
        FileLoc.Add(Path.GetDirectoryName(path)); 
       } 

我想每個LOF的文件列表並FileLoc爲表中的各列。 PS:我是C#的新手。

+0

我很想將此作爲一個重複的問題[this](http://stackoverflow.com/questions/11751901/ssis-script-task-get-file-names-and-store-to-an-ssis-object-variable)。 – BCdotWEB 2015-02-11 10:07:24

+0

是!這對我很好!謝謝@BCdotWEB! – Prakazz 2015-02-11 13:20:33

回答

0

我發現我在這個環節上查詢的解決方案,SSIS Script Task Get File Names and Store to an SSIS Object Variable

不過還是我張貼我的回答,我曾提出

  ConnectionManager cm; 
      System.Data.SqlClient.SqlConnection sqlConn; 

      cm = Dts.Connections["<connection name>"];//should be an ADO .NET connection 
      sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction); 

       foreach (string dirpath in Directory.EnumerateDirectories("<Folder Location>")) 
       { 
        //Sql Parameters object creation 
        SqlParameter SQLFileNameName = new SqlParameter("@FileName", SqlDbType.VarChar,200); 
        SqlParameter SQLFileLocation = new SqlParameter("@FileLoc", SqlDbType.VarChar, 200); 

        //Assign value to SQL parameter 
        SQLFileLocation.Value = dirpath; 

        foreach (string path in Directory.EnumerateFiles(dirpath)) 
        { 
         //Assign value to SQL parameter 
         SQLFileNameName.Value = Path.GetFileName(path); 

         //Populate to a SQL Table 
         SqlCommand sqlCmd = new SqlCommand("INSERT INTO [dbo].[<Table Name>] (FileName,FileLocation) VALUES (@FileName,@FileLoc)", sqlConn); 

         //Assign Parameters to script 
         sqlCmd.Parameters.Add(SQLFileNameName); 
         sqlCmd.Parameters.Add(SQLFileLocation); 

         //Execute SQL Command 
         sqlCmd.ExecuteNonQuery(); 

         //Clear the parameters and the set the object to NULL 
         sqlCmd.Parameters.Clear(); 
         sqlCmd = null; 

        } 
       } 
相關問題