我对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)