首页 > 解决方案 > 通过 SSIS 将数据从 Excel (xlsx) 文件加载到 SQL 表时出现科学记数法问题

问题描述

我正在使用 SSIS 包将数据从 excel 文件 (.xlsx) 加载到 SQL 表中。对于一列,它在数据中添加科学记数法,它已经存在于 excel 文件中。但它的实际值并未加载到 SQL 表中。我尝试了派生列、表达式等的多个选项。但我无法获得正确的值。

此列包含 numeric 和 nvarchar 值的数据。下面是列的示例。

ApplicationNumber  
1.43E+15  
923576663  
25388447  
TXY020732087  
18794588  
TXAP0000140343  

**Actual Values -**  
ApplicationNumber  
1425600000000000  
923576663  
25388447  
TXY020732087  
18794588  
TXAP0000140343 

从 Business 到 Excel 的数据没有问题。但是我们如何在 SSIS 中处理这种情况呢?我也试过 (DT_I8)ApplicationNumber==(DT_I8)ApplicationNumber, 但它给出了上述 1.43E+15 -> 1.430000000000000 而不是 1425600000000000 的值

标签: sql-serverexcelssisbusiness-intelligence

解决方案


您可以做的一件事是将 excel 源的高级编辑器中的输出设置为具有大比例的十进制,例如 20 位:

在此处输入图像描述

更新

要考虑同一列中的字符串,您可能需要重定向错误输出,因为这些会引发转换错误:

在此处输入图像描述

在此处输入图像描述

在高级编辑器中:

在此处输入图像描述

默认输出:

在此处输入图像描述

错误输出:

在此处输入图像描述

然后,您可以从默认输出和错误输出更新您的数据库。


推荐阅读