导入带有前导空单元格的 excel 删除逗号
Import excel with leading empty cells removes commas
我有一个带有一些数据的简单 excel-file。一些特定的列可以是 NULL、0 或具有 numeric(10,5) 的长度,例如以下格式:12345.12345。
excel-source 的输出列配置为 SSIS-type DT_R8 (double-precision floating-point)。
这很好用。一些其他文件的格式相同,但有时标题后的前导行为空
在这种情况下,SSIS 将导入以下不带逗号的行。他们刚刚被删除。 12345.12345 将是 1234512345.
所以我将 excel-output 列更改为 SSIS-type DT_WSTR(50)(这是 unicode-text) 并实现了 conversion-task 再次 DT_R8(双精度)。这适用于带有前导空单元格的文件!
但是如果我导入另一个没有前导空行的文件 - 我会得到巨大的结果:
9,98994 转换为 9,9894E+16。另一个更糟糕的例子(图中未显示):408,452 将转换为 408452。
因此,要么我导入 excel 类型为 DT_R8(浮动)并在导入 空前导单元格时丢失逗号 ,要么我导入 excel使用类型 DT_WSTR(文本)使用 conversion-task 并在导入时获得巨大的数字 没有空的前导单元格 .
我不知道这是什么错误以及如何修复它。我试了很多data-conversion,试了很多data-types。我无法自行更改 excel-file,因为它是自动生成的,而且我无法使用 WHERE COLUMNNAME IS NOT NULL
条件导入,因为其他列也包含重要数据。
编辑:
带有前导空单元格的文件的附加信息:这种文件格式在某种程度上很奇怪,导致了错误。第一个值为 0 的值位于第 65 行:
Float-values 刚从第 1061 行开始:
。
我认为为时已晚,SSIS 将此列解释为 integer-value,没有逗号。
billinkc 的提示是正确的!如果没有他的猜测,我不会尝试,但问题出在这个国家。在转换任务中,我不得不用输入列中的逗号替换点:
ISNULL(anspr_vk) || LEN(TRIM(anspr_vk)) == 0 ? "0,0" : REPLACE(anspr_vk,".",",")
这花了我一些时间 - 非常感谢你让我找到了正确的方法,billinkc!
我有一个带有一些数据的简单 excel-file。一些特定的列可以是 NULL、0 或具有 numeric(10,5) 的长度,例如以下格式:12345.12345。
excel-source 的输出列配置为 SSIS-type DT_R8 (double-precision floating-point)。
这很好用。一些其他文件的格式相同,但有时标题后的前导行为空
在这种情况下,SSIS 将导入以下不带逗号的行。他们刚刚被删除。 12345.12345 将是 1234512345.
所以我将 excel-output 列更改为 SSIS-type DT_WSTR(50)(这是 unicode-text)
但是如果我导入另一个没有前导空行的文件 - 我会得到巨大的结果:
因此,要么我导入 excel 类型为 DT_R8(浮动)并在导入 空前导单元格时丢失逗号 ,要么我导入 excel使用类型 DT_WSTR(文本)使用 conversion-task 并在导入时获得巨大的数字 没有空的前导单元格 .
我不知道这是什么错误以及如何修复它。我试了很多data-conversion,试了很多data-types。我无法自行更改 excel-file,因为它是自动生成的,而且我无法使用 WHERE COLUMNNAME IS NOT NULL
条件导入,因为其他列也包含重要数据。
编辑:
带有前导空单元格的文件的附加信息:这种文件格式在某种程度上很奇怪,导致了错误。第一个值为 0 的值位于第 65 行:
Float-values 刚从第 1061 行开始:
我认为为时已晚,SSIS 将此列解释为 integer-value,没有逗号。
billinkc 的提示是正确的!如果没有他的猜测,我不会尝试,但问题出在这个国家。在转换任务中,我不得不用输入列中的逗号替换点:
ISNULL(anspr_vk) || LEN(TRIM(anspr_vk)) == 0 ? "0,0" : REPLACE(anspr_vk,".",",")
这花了我一些时间 - 非常感谢你让我找到了正确的方法,billinkc!