0

我正在使用数据转换服务 (DTS) 功能或 SQL Enterprise Manager 2000 来运行从遗留系统到数据库的文本文件转储的预定导入。

作为导入的一部分,我已经使用 VBS 进行了一些转换,以处理文本文件转储中的一些不一致。大多数转换脚本是自动生成的,看起来像这样:

****************************************
' Visual Basic Transformation Script
' Copy each source column to the 
' destination column
****************************************

Function Main()

    DTSDestination("db_column_title1") = DTSSource("txt_column_title1")
    DTSDestination("db_column_title2") = DTSSource("txt_column_title2")
    DTSDestination("db_column_title3") = DTSSource("txt_column_title3")
    DTSDestination("db_column_title4") = DTSSource("txt_column_title4")
    Main = DTSTransformStat_OK

End Function

我想将文本文件的最后修改时间作为数据库中的附加列包含在内。我已经在数据库表中创建了该列,import_date但我不知道如何将文本文件的最后一次修改时间引用到此 VBScript 中。

基本上我想添加这样的东西:

DTSDestination("import_date") = DTSSource.LastModTime

我试过用谷歌搜索这样的属性,但我没有找到任何东西,VBS 和 DTS 对我来说仍然很模糊,所以我不确定是否有可能获取文本文件 mod time 作为脚本的参考.

4

1 回答 1

0

解决方案是在生成的转换脚本中使用 ActiveX 脚本对象,这使我可以直接引用导入的文本文件。我可以阅读 mod time 表单,而不是尝试为以下内容查找 ModTime 属性DTSSource

****************************************
' Visual Basic Transformation Script
' Copy each source column to the 
' destination column
****************************************

Function Main()

    // create a direct reference to the import file
    Dim oFSO
    Dim importFile

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set importFile = oFSO.GetFile("\\server\file\path")

    // get mod time from the reference
    lastMod = importFile.DateLastModified

    DTSDestination("db_column_title1") = DTSSource("txt_column_title1")
    DTSDestination("db_column_title2") = DTSSource("txt_column_title2")
    DTSDestination("db_column_title3") = DTSSource("txt_column_title3")
    DTSDestination("db_column_title4") = DTSSource("txt_column_title4")

    // add the data here
    DTSDestination("import_date") = lastMod

    Main = DTSTransformStat_OK

End Function
于 2013-04-28T18:26:42.473 回答