繁体   English   中英

导入带有前导空单元格的 excel 删除逗号

[英]Import excel with leading empty cells removes commas

我有一个包含一些数据的简单 excel 文件。 一些特定的列可以是 NULL, 0 或具有 numeric(10,5) 的长度,例如以下格式: 12345.12345

来自 excel 源的 output 列配置为 SSIS 类型 DT_R8(双精度浮点)。 excel 源的输出列配置为 SSIS 类型 DT_R8(双精度浮点)。点击这里查看图片。

这工作正常。 一些进一步的文件具有相同的格式,但有时标题后面的前导行是空的标题后的前导行为空。点击这里查看图片。

在这种情况下,SSIS 将导入以下不带逗号的行。 它们只是被删除。 12345.12345将是1234512345

所以我将 excel 输出列更改为 SSIS 类型的 DT_WSTR(50) (这是 unicode-text) excel 输出列到 SSIS 类型 DT_WSTR(50) (这是 unicode 文本) 并再次执行到 DT_R8 的转换任务(双精度)再次将任务转换为 DT_R8(双精度) . 这适用于带有前导空单元格的文件!

但是,如果我导入另一个文件而不引导空行 - 我会得到巨大的结果:

在此处输入图像描述 9,98994 转换为 9,9894E+16。 另一个更糟糕的例子(图中未显示):408,452 将转换为 408452。

因此,要么我导入 excel 类型为 DT_R8 (float) 并在导入空前导单元格时丢失逗号,要么我导入 excel 类型为 DT_WSTR (text) 并在没有空前导单元格的情况下导入时获得大量数字。

我不知道这是什么错误以及如何修复它。 我尝试了很多数据转换并尝试了很多数据类型。 我无法自行更改 excel 文件,因为它是自动生成的,我无法使用WHERE COLUMNNAME IS NOT NULL导入,因为其他列也包含重要数据。

编辑:带有前导空单元格的文件的附加信息:这种文件格式有点奇怪,是导致错误的原因。 第一个值为 0 的值在第 65 行: 在此处输入图像描述

浮点值从第 1061 行开始: 在此处输入图像描述 .

我认为这为时已晚,SSIS 将此列解释为不带逗号的整数值。

billinkc 的提示是正确的,如果没有他的猜测,我不会尝试。 但问题出在国家:在转换任务中,我必须用输入列中的逗号替换点:

ISNULL(anspr_vk) || LEN(TRIM(anspr_vk)) == 0 ? "0,0" : REPLACE(anspr_vk,".",",")

在此处输入图像描述

这花了我一些时间——非常感谢你让我找到正确的方法,blinkc!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM