在 ssis 中导出到 csv 时包括前导零
Posted
技术标签:
【中文标题】在 ssis 中导出到 csv 时包括前导零【英文标题】:include leading zeros while exporting to csv in ssis 【发布时间】:2018-04-28 15:14:36 【问题描述】:我有一个将数据从表导出到 .csv 文件的包,它导出了 600 000 条记录。
我有几列有前导零和尾随零,而导出数据时前导零和尾随零都丢失了。
EX:来自源的实际数据
column1 column2
001 67.50
csv 文件中的导出数据
column1 column2
1 67.5
我尝试了很多方法,比如在派生列中放置数据转换,以及复制函数。
我还尝试将数据导出到 .txt 文件并使用 .cmd 文件将 .txt 文件更改为 .csv 文件,所有这些方法都没有产生任何结果。
有没有办法做到这一点?
【问题讨论】:
确保目标是文本列。如果这不起作用,请尝试使用引号换行文本。 你是如何尝试从目的地打开 .CSV 文件的? 受影响列的 SSIS 数据类型是什么?检查源组件的输出。 【参考方案1】:当导出到需要保留前导和/或尾随零的文本或 csv 格式文件数值时,需要以下组合。
1) 使用数据流下的派生列或转换任务,将数值字段转换为文本或 varchar。
2) 确保目标 CSV 文件的字段定义为具有足够字符长度的文本。
最后,如果您在输出文件中需要数值(NULL 或空白不可接受),请查看以下链接。这是必须提供“0.00”而不是 NULL 或空白的地方。
How do I get SSIS Data Flow to put '0.00' in a flat file?
希望这会有所帮助。
【讨论】:
【参考方案2】:打开Destination csc中使用的Flat File Connection manager
,转到Advanced Tab
将所有列数据类型更改为DT_STR
或DT_WSTR
(注意当数据保存到平面文件时,没有数据类型考虑)
如果仍然无法正常工作,则添加一个派生列,将这些值转换为 DT_STR
,然后再将它们分配给 Destination
【讨论】:
以上是关于在 ssis 中导出到 csv 时包括前导零的主要内容,如果未能解决你的问题,请参考以下文章
将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?