1

最初,我整理了一个 TSQL 脚本来从一组平面文件中批量导入数据。(见下文)。使用 SQLSERVER 中的函数很容易将数据转换为我想要的数据类型,并根据我可能遇到的数据集的任何独特条件来处理数据转换。例如,所有列的开头或结尾都可以有空格,表示空值的日期列具有特定值,作为货币的数据可以在表示负数的数字末尾有破折号,等等。所以我使用 sqlserver 中的标量值函数来处理各种条件和案例语句以允许一致的数据集。

我现在的目标是将其迁移到 SSIS,但是复制我在 SSIS 中已经完成的工作似乎非常麻烦。虽然 SSIS 确实有工具来进行转换(如字符映射、数据转换、派生列工具和脚本组件)。——要获得我已经在我的剧本中拥有的东西,似乎需要做大量的工作。看来我不能重复使用任何东西。虽然这对于一张小桌子来说可能没问题,但为每张桌子输入 50 多列相同的复杂转换确实是一件苦差事——然后在我需要修改某些东西时保持它?呃。我肯定错过了什么。谢谢你的帮助。

            INSERT INTO [TEST1].[dbo].[Table1] 
            SELECT 
               dbo.TRIM([ID]) 
              ,dbo.FixDate([CompleteDate]) 
              ,dbo.TRIM([IsDeleted]) 
              ,dbo.Text2Numeric([QtyTotal]) 
              ,dbo.Text2Numeric([OrderQty]) 
              ,dbo.Text2Money([Price]) 
              FROM  OPENROWSET(BULK  '\\server1test\temp\import1.txt', FIRSTROW=2,
              FORMATFILE='\\server1test\temp\import1.Xml'
              ) as t1 ;
        GO 
4

1 回答 1

0

不涉及自定义 dll 和 GAC 的可能解决方案是仅使用执行 SQL 任务。我试过这个并且它有效,但我想知道缺点是什么。另一个想法是使用 Ole DB 命令并将其包装在存储过程调用中。这种方法的缺点是什么?

于 2012-04-18T16:10:06.613 回答