vb dts 转换数据问题 
A数据库类型 oracle 10g,表tab_a (cola number(10),colb varchar2(20)) 
B数据库类型 oracle 10g,表tab_b (cola number(10),colb varchar2(20)) 
通过vb 调用dts 将tab_a表数据复制到tab_b表,出现数据不一致的情况,请教各位大大,什么原因阿? 
tab_a 数据         cola            colb 
1        1000          1000 
2        10000        10000 
3        100000        100000 
4        100001        100001 
5        100002        100002 
6        100003        100003 
通过dts 复制完数据后 
tab_b 数据 
        cola            colb 
1        0            1000 
2        0            10000 
3        0            100000 
4        100001        100001 
5        100002        100002 
6        100003        100003

解决方案 »

  1.   

    既然varchar2数据类型能够正确导入,你可以给表先新增一列colc varchar2(20),然后把cola转换字符到colc再导入
    导入完成后,再update colc到cola
      

  2.   

    Option ExplicitPublic goPackage As DTS.Package
    Public Sub DTS_Base_Main(drrq As String)
        Set goPackage = New DTS.Package
        Dim conn As DTS.Connection
        '定义一个连接—test
        Set conn = goPackage.Connections.New("OraOLEDB.Oracle.1")
            conn.ConnectionProperties("Data Source") = "test"
            conn.ConnectionProperties("Password") = "aa"
            conn.ConnectionProperties("User ID") = "aa"
            conn.ConnectionProperties("Persist Security Info") = True
            conn.Name = "testa"
            conn.ID = 1
        goPackage.Connections.Add conn
        Set conn = Nothing
        '定义一个连接—yypt
        Set conn = goPackage.Connections.New("OraOLEDB.Oracle.1")
            conn.ConnectionProperties("Data Source") = "test"
            conn.ConnectionProperties("Password") = "bb"
            conn.ConnectionProperties("User ID") = "bb"
            conn.ConnectionProperties("Persist Security Info") = True
            conn.Name = "testb"
            conn.ID = 2
        goPackage.Connections.Add conn
        Set conn = Nothing
        ' 建立步骤信息
        Dim oStep As DTS.Step
        Dim oPrecConstraint As DTS.PrecedenceConstraint
        '定义一个步骤—复制数据hisfureal
        Set oStep = goPackage.Steps.New
            oStep.Name = "Copy Data from [testa].[tab_a] to [testb].[tab_b] Step"
            oStep.TaskName = "Copy Data from [testa].[tab_a] to [testb].[tab_b] Task"
        goPackage.Steps.Add oStep
        'Set oStep = Nothing
           goPackage.Steps.Add oStep
        Set oStep = Nothing
        ' 调用子程序复制数据
        Call Task_a(goPackage, drrq)
        ' 执行DTS包
        goPackage.Execute
        Set goPackage = Nothing
    End Sub
    '子程序Task_a复制数据
    Public Sub Task_Hisfureal(ByVal goPackage As Object, drrq As String)
        Dim oTask As DTS.Task
        Dim cTask As DTS.DataPumpTask
        Set oTask = goPackage.Tasks.New("DTSDataPumpTask")
        Set cTask = oTask.CustomTask
            cTask.Name = "Copy Data from [testa].[tab_a] to [testb].[tab_b] Task"
            cTask.Description = "Copy Data from [testa].[tab_a] to [testb].[tab_b] Task"
            cTask.SourceConnectionID = 1
            cTask.SourceSQLStatement = "select * from test_a where init_date='" + drrq + "'"
            cTask.DestinationConnectionID = 2
            cTask.DestinationObjectName = "tab_b"
        Call Task_Trans(cTask)
        goPackage.Tasks.Add oTask
        Set cTask = Nothing
        Set oTask = Nothing
    End Sub
    '建立Transformation对象
    Public Sub Task_Trans(ByVal cTask As Object)
        Dim oTrans As DTS.Transformation
        Set oTrans = cTask.Transformations.New("DTS.DataPumpTransformCopy")
            oTrans.Name = "DataPumpTransformCopy"
        cTask.Transformations.Add oTrans
        Set oTrans = Nothing
    End Sub