0

SSIS スクリプト タスクのローカル フォルダーからファイルのリストがあり、それを SQL テーブルに記録する必要があります。スクリプト タスクから直接実行する方法や、結果をオブジェクト変数に入れてから SQL テーブルに入力する方法はありますか。スクリプト タスクから詳細をログに記録できると思うので、For Each ループ コンテナーのオプションは使用しません。

コード:

                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));
                }

各 FileList と FileLoc をテーブルの個々の列として扱いたいと思います。

PS: 私は C# が初めてです。

4

1 に答える 1

0

このリンクで私のクエリの解決策を見つけました.SSIS Script Task Get File Names and Store to an SSIS Object Variables

それでも、私が提起した質問への回答を投稿しています

            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;

                    }
                }
于 2015-02-11T13:27:38.760 に答える