-1

私はETLの世界に非常に慣れていませんが、3か月前のようにETLを学び始めて以来、SSISを使用していくつかのETLを実行しました。経験のある方にはいい質問があります。

。作成したデータベースのテーブルに、フォルダーからのファイル情報(Filename、FileSize、ReceivedDate)を入力したいと思います。SSISパッケージを使用します。例として、SQLデータベースの以下のパスにファイル情報をロードします。

C:\ Users \ Documents \ newfiles\purchaseorder。C:\ Users \ Documents \ newfiles\invoice。

また、複数の種類のファイルがあることに注意してください。csv、edi、tcfなど

誰かがこの問題を解決するためのステップバイステップガイドを親切に与えることができますか?

ありがとう。

4

2 に答える 2

2

そのような情報を取得する最も簡単な方法はSystem.IO.FileInfo、スクリプト タスクで .NET Framework のクラスを使用することです。

   public void Main()
    {
        var receivedFile = (string)Dts.Variables["User::ReceivedFile"].Value;
        var fileInfo = new System.IO.FileInfo(receivedFile);
        Dts.Variables["User::FileName"].Value = fileInfo.FullName;
        Dts.Variables["User::FileSize"].Value = fileInfo.Length;
        Dts.Variables["User::ReceivedDate"].Value = fileInfo.CreationTime;
        // or whatever other information you may need

        Dts.TaskResult = (int)ScriptResults.Success;
    }

上記のコードは、User::ReceivedFile扱っているファイルのフル パスに変数を設定したことを前提としています。これは通常 (常にではありません)、ファイル システム タスクを介して実行されます。明らかに、スクリプト タスクを構成するときReadWriteは、書き込み先の変数へのアクセスを指定する必要があります。

もちろん、その情報を変数に格納したら、必要な方法でそれを使用できます。

FileInfoクラスの詳細については、MSDNのこちらを参照してください。

于 2013-03-18T20:40:37.030 に答える
1

これは、情報を抽出するために使用しているコードです...

     HHInfo = New FileInfo(HHFile(i).ToString())

    HHFileDate = HHInfo.CreationTime

  HHDate = HHFileDate.ToString("dd/MM/yyyy")
                    writer.Write("HHInfo.CreationTime  : " & HHInfo.CreationTime.ToString & vbNewLine & vbNewLine)
                    writer.Write("HHInfo.LastAccessTime  : " & HHInfo.LastAccessTime.ToString & vbNewLine & vbNewLine)
                    writer.Write("HHInfo.LastWriteTime  : " & HHInfo.LastWriteTime.ToString & vbNewLine & vbNewLine)

                    HHElapsedTime = New DateTime(((HHInfo.LastWriteTime - HHInfo.CreationTime).Ticks))

                    EndTimelist.Add(HHInfo.LastWriteTime)

                    writer.Write("HHElapsedTime  : " & HHElapsedTime.ToString("HH:mm:ss") & vbNewLine & vbNewLine)

                    swriter.WriteLine("HH Start Time  : " & HHInfo.CreationTime.ToString & vbNewLine)
                    swriter.WriteLine("HH End Time  : " & HHInfo.LastWriteTime.ToString & vbNewLine)
于 2013-03-19T11:21:50.650 に答える