SSIS从csv平面文件源中删除左零

时间:2018-10-21 12:32:31

标签: ssis

我有一个要在SSIS中处理的csv文件。该文件包含列类型字符串Unicode字符串[DT_WSTR],例如:ColumnA->("00000123400")。

我想删除123400左侧的零,并删除引号,其结果如下:123400

对于引号,我可以通过派生列REPLACE (ColumnA, "\" "," ")找到以下解决方案:00000123400

如何删除左侧的零?

删除引号后,我尝试将我的字符串转换为整数[DT_I4],但这并没有删除零。

你对我的案子有答案吗?预先感谢。

2 个答案:

答案 0 :(得分:1)

部分案例的解决方案是:

在“派生”列中添加表达式:

REPLACE(LTRIM(REPLACE(ColumnA,"0","")),"","0")

它删除了剩下的零

您可以看到链接:Removing left padding zero in SSIS

它工作正常,但是是否可以修剪左零并在表达式中同时删除引号?

示例:我有Column1,它是带引号的字符串,并且左零-“​​ 0000123400”

我尝试以下表达式:

REPLACE(REPLACE(LTRIM(REPLACE(column1, "0", " ")), " ", "0"),"\""," ") 

但是它不起作用,它会删除所有零并返回1234。

我想要的解决方案是获得123400。

我应该一个接一个地做吗?创建一个已交付的列并先删除引号,然后为“左零”创建另一个已交付的列?

谢谢。

答案 1 :(得分:0)

您似乎希望输出为数字形式?如果是这样,下面的表达式将删除引号和前导零,同时保留Unicode文本中的尾随零。这可以通过一次操作完成,一个派生列将创建一个新列(添加新列选项),并在数据流中使用整数输出数据类型。

(DT_I4)REPLACE(ColumnA,"\"","")

如果要将其保留为Unicode数据类型,则下面的表达式也将在单个“派生列”中执行此操作。只需根据您的列调整长度即可。

(DT_WSTR, 50)(DT_I4)REPLACE(CoulmnA,"\"","")