【问题标题】:SSIS Excel import turns strings to NULLSSIS Excel 导入将字符串变为 NULL
【发布时间】:2013-06-10 09:12:25
【问题描述】:

我动态定义了一个用户变量 xlsFileName 和 xlsWorksheetName。在 excel 连接管理器中,excelfilepath 指向 xlsFileName。在 excel 源中,我使用 excel 连接管理器和访问模式表名称或视图名称变量,然后我使用工作表变量 xlsWorksheetName。这一切都很好,并且数据会按应有的方式加载。

但现在我注意到,在我的一列(其中包含数字和字符串,其中大部分是数字)中,所有字符串都将被导入为 NULL,这是完全错误的。此列的目标数据类型是 varchar。

如何强制 SSIS 从 excel 中导入源中的真实值?

【问题讨论】:

  • 不,imex=1 没有帮助,仍然是 NULL...
  • 是的,大多数答案都是这样说的。我个人不是直接从Excel导入,而是先转换成竖线分隔的txt。
  • 还有其他想法吗?我真的需要让这个工作:(我试图做一个类似sql的命令,我用CSTR转换列(因为它的访问sql)但仍然没有运气......你说你先把它转换成管道分隔的txt,做您在 ssis 中执行此操作,如果是,如何?只要我可以在 ssis 中执行此操作,我也会转换为 csv 或其他内容。业务用户只知道 excel,所以这就是我无法更改原始源文件的原因。
  • 您将创建一个新的临时文件,该文件将在包的末尾使用和丢弃。我的方法是从 SSIS 中调用外部 Excel 到 Txt 控制台应用程序,并传递必要的变量,如文件位置。控制台应用程序在完成时返回转换文件的文件路径,我将其映射到一个变量并用作我的数据流的源。该过程的本质是转换应用程序。

标签: excel import ssis


【解决方案1】:

我遇到了类似的问题,然后我尝试调整 SSIS 的 Excel 任务的所有属性,主要是在高级编辑器中。就像更改输入/外部列的数据类型一样。尝试将列数据类型更改为 Numeric 。先试试这个。如果这根本不起作用

尝试将 Excel 连接管理器的属性(如 Excel 版本)从 97-2003 更改为 2007

我有 97-2003 格式的 excel 文件,即使连接管理器版本更改为 2007 ,也没有任何数据丢失和所有字符串之前返回 NULL 现在返回每个字符串和数字。

在更改 Excel 版本之前:即 97-2003

将版本改为2007

请试试这个并在这里告诉我们

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2018-01-25
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多