SSIS - Excel 数据显示为科学记数法和空值



我有一些包含科学数字的excel数据,如5e+00。 当通过单击编辑按钮在 excel 中看到值时,我可以看到完整的值。但是当我将数据导入表中时,我正在Null加载数据。我需要在不对 excel 进行任何更改的情况下导入数据。请建议如何在 SSIS 中执行此操作。

我尝试通过在 excel 端更改格式来导入。我希望它在 ssis 级别完成,而无需在 excel 中进行任何更改

我的列中的数据为

Amounts
15880
5e+19
57892

我希望输出应该如下所示

1588007
500000000019
57892

但是我得到第二个项目的空值

请指教。

在上面的问题中,有两个问题:

  1. 数字以科学格式显示
  2. 导入时数据被 Null 值替换

科学格式问题

你提到:

我尝试通过在 excel 端更改格式来导入。我希望它在 SSIS 级别完成,而无需在 excel 中进行任何更改

不幸的是,如果不更改 Excel 文件,就无法完成此操作,因为解决此问题的唯一方法是更改单元格的"数字格式">属性。可以通过添加脚本任务来自动执行此步骤Microsoft.Office.Interop.Excel.dll该脚本任务使用程序集自动执行此过程,而不是从 Excel 手动执行。

您可以参考以下帖子作为示例:

  • 在 ssis 脚本任务中设置 Excel 目标列的格式

但请确保使用:

m_XlWrkSheet.Columns(1).NumberFormat = "0"

强制使用数字格式。

空值问题

此问题是由用于读取 Excel 文件的 OLE DB 提供程序引起的,当 Excel 列包含混合数据类型,OLE DB 提供程序读取具有主要数据类型的值并将所有其他值替换为 Null 时,会发生此错误。

您可以参考以下链接以获取更多信息/解决方法:

  • 导入 Excel 数据似乎随机给出空值
  • 具有特殊字符和前导零的 varchar 上的 SQL JOIN
  • 通过 SSIS 动态创建 Excel 表

最新更新