【问题标题】:retain null, blank, na values while excel to sql server data import in SSIS data flow task在 SSIS 数据流任务中将 excel 到 sql server 数据导入时保留 null、blank、na 值
【发布时间】:2023-03-23 11:32:01
【问题描述】:

当我将数据从 excel 导入到 SSIS 中的 SQL 服务器时,我想保留 null、blank、na 值。我使用数据流任务将数据从 excel 导入到 sql server。如前所述,它有时会将 na 值转换为 null 或空。请帮忙

【问题讨论】:

  • #N/A 不是 Excel 中的值。这是一个错误。您可以复制并粘贴特殊的带有值的工作表,在导入之前获取#N/A 选择数据源时,选中框Retain Null Values 以保持NULL 值不变
  • 感谢您的快速回复。在我的 excel 表中,我有值 'na' (不适用)但没有 #N/A 。和一些空白值。用户想要保留 na ,空值,他不希望它们被视为 NULL 值。我选择了在 SSIS 数据流任务 Excel 源中选中的 Keep NULL 值。
  • 目标列的数据类型是什么?
  • 它在 excel 中的数字列,我在我的 sql server 目标表中将它作为 nvarchar(255)。

标签: sql-server excel ssis dft


【解决方案1】:

您的问题似乎是 Excel 连接管理器根据默认的 8 行样本大小将该列识别为整数。一旦它被识别为整数,其余行将被视为相同,并且任何无法转换为整数的值都将被视为NULL

在 SSIS 中创建连接后,选择连接并在属性窗格中针对Connection String,在最后添加IMEX=1

这是一个例子

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test\New Microsoft Excel Worksheet.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1 ";

请注意,IMEX 参数并不是万能的。它通常被(错误地)描述为“将所有值作为文本读取”。它的作用是指示 Excel 驱动程序进入“导入模式”,该模式指示驱动程序将具有数字和文本的列解释为仅作为文本导入,而不是根据其常规“猜测”进行解释。

【讨论】:

  • 非常感谢,将连接字符串更新为 IMEX=1 对我有用,但我不得不将表中的某些列更改为 nvarchar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 2012-09-19
  • 1970-01-01
  • 2016-07-10
相关资源
最近更新 更多