SSIS中CSV带引号的Order Item Id转整数失败,求简便解决方法
最简单的解决方法:先移除引号再转换
这个问题我碰到过好多次,本质就是CSV里的双引号让SSIS没法直接把字符串转成数值类型。最快的处理方式有两种,优先选第一种,最省心:
方法1:修改Flat File连接管理器自动去除引号
这是最直接的,从源头解决问题:
- 打开你的Flat File Connection Manager,切换到「Columns」标签页
- 在页面顶部的Text qualifier下拉菜单里选择双引号("
") - 点击确定后,Flat File Source读取到的
Order Item ID就会是不带引号的纯数字字符串,之后不管是用Data Conversion组件直接转数值,还是在目标表中直接映射成数值类型,都不会再报错了
方法2:用派生列手动移除引号(备选方案)
如果因为某些限制没法修改连接管理器,就在Data Flow里加个派生列处理:
- 在Flat File Source后面添加一个Derived Column转换组件
- 新增一个派生列,输入表达式:
REPLACE([Order Item ID], "\"", "")——这个表达式会把字段里的双引号全部替换为空 - 把这个新生成的无引号列,通过Data Conversion组件转成你需要的数值类型(比如
DT_I4对应int,DT_I8对应bigint,根据ID的数值范围选就行)
为什么之前会报错?
你看到的status value 2报错,本质不是真的“数据丢失”,而是SSIS尝试把包含双引号的字符串(比如"347262171")转成数值时,识别到了非数字字符(引号),没法完成转换,所以抛出了这个误导性的提示。只要把引号去掉,纯数字字符串转数值就完全没问题了。
内容的提问来源于stack exchange,提问作者JussiJ
相关产品推荐
相关产品推荐

