在 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_STRDT_WSTR(注意当数据保存到平面文件时,没有数据类型考虑)

如果仍然无法正常工作,则添加一个派生列,将这些值转换为 DT_STR,然后再将它们分配给 Destination

【讨论】:

以上是关于在 ssis 中导出到 csv 时包括前导零的主要内容,如果未能解决你的问题,请参考以下文章

将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?

使用 Pandas 读取 CSV 时如何在列中保持前导零?

在SSIS中导入CSV:截断错误

使用vba在excel中复制带有前导零的数字文本

在 Ag-Grid 中导出到 excel 时将 css 类应用于列

php导出CSV时,超长数字精度丢失问题与前导0的字符串丢失0的问题解决