如何加载文件名,文件大小,接收日期使用SSIS,到一个数据库



我对ETL的世界非常陌生,尽管自从我3个月前开始学习ETL以来,我已经使用SSIS做了几个ETL。我有一个很好的问题要问有经验的人。

。我想在我用文件夹中的文件信息(Filename, FileSize和ReceivedDate)创建的数据库中填充一个表。使用SSIS包。一个示例是在sql数据库的以下路径中加载文件信息。

C: newfile中 purchaseorder资料。C:UsersDocumentsnewfiles发票。

还要注意我有多种类型的文件。csv、edi、tcf等。

谁能给一步一步的指导解决这个问题?

谢谢。

获得这类信息的最简单方法是在脚本任务中使用。net框架的System.IO.FileInfo类:

   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。

这是我用来提取信息的一段代码…

     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)

最新更新