我正在使用VS 2008创建一个SSIS包,我发现当包被移动到另一台机器时,相同的包正在以不同方式导入数据。
在我的SSIS包中,我有一个首先运行的脚本任务,运行正常。下一步是获取CSV文件(在脚本任务中创建)并将其导入数据库。为了测试这个,我在VS中执行以下操作:
构建我的解决方案 构建我的SSIS包 从VS
运行SSIS包所有这一切都很好。然后我转到DTSX文件所在的bin文件夹,然后我从该包中创建一个SQL作业。
当我运行这个包时,我注意到它失败了,当我深入挖掘时,它失败了,因为从CSV文件导入的数据也引用了引用到表中的引号,如下所示:
PolicyNumber FamilyMemberID LastName
"000001" "A" "Wilkinson"
"000001" "Z" "Wilkinson"
"000002" "R" "Trujillo"
它应该是这样的:
PolicyNumber FamilyMemberID LastName
000001 A Wilkinson
000001 Z Wilkinson
000002 R Trujillo
我很困惑,因为我针对相同的文件运行相同的软件包,但它只是在两台不同的机器上执行,我不认为这样的事情可能是一个权利问题。
另外,我对CSV文件的设置是使用引号作为文本限定符
答案 0 :(得分:0)
右键单击Flat File Source,单击Show Advance Editor,单击Input and Output Properties,展开Flat File Source Output,展开External Columns,单击显示的每个列并更改DataType属性 每列的Unicode_String,然后对输出列执行相同的操作。看看这是否有帮助。
按照上述过程并将“(引号)”保留为文本限定符,您将不得不使用2个派生列转换,并使您的数据流看起来像以下屏幕截图:
在第一个派生列转换中,输入您在屏幕截图中看到的内容,如下所示:
在第二个派生列转换中,输入您在屏幕截图中看到的内容,如下所示:
希望这有帮助。
注意:我使用Excel目标进行测试,根据您的解决方案,您将需要使用OLE DB目标对象或OLE DB Command对象。