2015-02-11 5 views
0

У меня есть список файлов из локальной папки в задаче SSIS Script, и мне нужно записать его в таблицу SQL. Есть ли способ, которым я могу сделать это непосредственно из задачи сценария или может быть помещен в объектную переменную, а затем заполнить ее в таблице SQL. Я не беру вариант контейнера для каждого цикла, поскольку я чувствую, что могу записывать более подробную информацию из задачи Script.Занесение списка файлов из скриптовой задачи в таблицу 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 каждый FileList и FileLoc в виде отдельных столбцов в таблице.

PS: Я новичок в C#.

+0

Я искушен, чтобы пометить это как дубликат [this] (http://stackoverflow.com/questions/11751901/ssis-script-task-get-file-names-and-store-to-an-ssis-object-variable). – BCdotWEB

+0

Yup !! Это сработало для меня! Спасибо @BCdotWEB !! – Prakazz

ответ

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; 

        } 
       }