如何使用SSIS Visual Studio将CSV文件非Unicode字符串转换为整数
问题原因与解决方案
为什么Data Convert组件设置无法保存
你遇到的设置自动回退问题,核心原因是平面文件源输出的Order Id列初始为LOB类型(DT_TEXT/DT_NTEXT文本流类型),Data Convert组件不支持直接将LOB大文本类型转换为数值类型,组件检测到转换规则不合法后会自动回退配置。
正确导入CSV的操作步骤
按照以下顺序调整配置即可完成类型转换和导入:
- 第一步:调整平面文件源的基础配置
- 打开平面文件连接管理器的「通用设置」页,将文本限定符设置为
"(双引号),配置后读取CSV时会自动去掉字段前后的双引号,直接获取纯数字内容。 - 切换到「高级设置」页,找到Order Id对应的列,将其数据类型从默认的DT_TEXT改为
DT_STR,长度设置为20(覆盖正常订单号长度即可),代码页选择和你导出CSV匹配的非Unicode代码页(如简体中文选936,西欧语言选1252)。
- 打开平面文件连接管理器的「通用设置」页,将文本限定符设置为
- 第二步:重新配置类型转换
完成上述调整后,Order Id列已经变为普通字符串类型,不是LOB文本流:- 如果你继续用Data Convert组件,现在选择Four-Byte Signed Integer(DT_I4)类型,配置会正常保存不会回退。
- 也可以用派生列组件替代,表达式写
(DT_I4)REPLACE([Order Id],"\"",""),容错性更高,就算有残留的双引号也会先替换再转换。
- 第三步:将转换完成的字段映射到目标表的int类型字段,重新运行即可完成导入。
内容的提问来源于stack exchange,提问作者Samael
相关产品推荐
相关产品推荐

