通过 SSIS 将数据从 Excel (xlsx) 文件加载到 SQL 表时出现科学记数法问题
Scientific Notation Issue while loading data from Excel (xlsx) file to SQL Tables via SSIS
我正在使用 SSIS 包将数据从 excel 文件 (.xlsx) 加载到 SQL table。对于其中一列,它在数据中添加了科学记数法,它已经存在于 excel 文件中。但它的实际值并未加载到 SQL table。我尝试了派生列、表达式等的多个选项。但我无法获得正确的值。
此列包含数字和 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
您可以做的一件事是在 excel 源的高级编辑器中将输出设置为大比例的十进制,例如 20 位:
更新
要同时考虑同一列中的字符串,您可能需要重定向错误输出,因为它们会引发转换错误:
在高级编辑器中:
默认输出:
错误输出:
然后您可以根据默认和错误输出更新您的数据库。
我最近在使用 SSIS 时也遇到了这个问题。
1- 将 Excel 中的列类型更改为“数字”
2- 去掉小数位。
3- 使用 SSIS 上传文件
我正在使用 SSIS 包将数据从 excel 文件 (.xlsx) 加载到 SQL table。对于其中一列,它在数据中添加了科学记数法,它已经存在于 excel 文件中。但它的实际值并未加载到 SQL table。我尝试了派生列、表达式等的多个选项。但我无法获得正确的值。
此列包含数字和 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
您可以做的一件事是在 excel 源的高级编辑器中将输出设置为大比例的十进制,例如 20 位:
更新
要同时考虑同一列中的字符串,您可能需要重定向错误输出,因为它们会引发转换错误:
在高级编辑器中:
默认输出:
错误输出:
然后您可以根据默认和错误输出更新您的数据库。
我最近在使用 SSIS 时也遇到了这个问题。
1- 将 Excel 中的列类型更改为“数字”
2- 去掉小数位。
3- 使用 SSIS 上传文件