SSIS从Excel导入百分比列在数据库中显示为NULL

Posted

技术标签:

【中文标题】SSIS从Excel导入百分比列在数据库中显示为NULL【英文标题】:SSIS importing percentage column from Excel displaying as NULL in database 【发布时间】:2020-08-03 19:25:07 【问题描述】:

我设置了一个 ETL 流程,用于从 Excel 电子表格中获取数据并使用 SSIS 将其存储在数据库中。但是,Excel 文件中的某一列被格式化为百分比,有时会在数据库中错误地存储为 NULL 值,就好像存在某种翻译错误一样。

图片是 Excel 中列所使用的确切格式。

有趣的是,这些百分比值在某些日子确实可以正确加载,但由于某种原因,我作为这个问题的示例给出的一个特定 Excel 表在通过 SSIS 处理器时根本不会加载它们中的任何一个。

在 Excel 中,这些值将显示为“50.00%”,当 SSIS 处理器能够正确翻译它们时,它将在数据库中显示为十进制等效值“0.5”,这是我想要的,而不是NULL 值。我在 SSIS 中为此使用的数据类型是 Unicode 字符串 [DT_WSTR],它在数据库中保存为 NVARCHAR。

了解为什么这些值有时无法按预期显示/翻译?我曾尝试在 SSIS/SQL Server 中弄乱数据类型,但它要么没有导致任何变化,要么没有错误。当我将测试值放入 Excel 工作表中时,例如“测试”以查看它是否从该列导入任何内容,它似乎确实有效(只是不适用于我需要的百分比数字)。

【问题讨论】:

【参考方案1】:

这个问题是由我的数据的前几行中存在的“混合数据类型”引起的(“混合”部分是空白字段),这可以解释为什么有些工作表可以工作而其他工作表不能工作。

https://***.com/a/542573/11815822

设置连接字符串以解决此问题。

【讨论】:

以上是关于SSIS从Excel导入百分比列在数据库中显示为NULL的主要内容,如果未能解决你的问题,请参考以下文章

SSIS - 修复源数据中数据类型不正确的数据

解决从Excel导入数据库,导入到DataTable时数据类型发生变化的问题(如数字类型变成科学计数法,百分数变成小数)

如何将今天的日期excel表自动导入SSIS [重复]

SSIS Excel 数据导入 - 行中的混合数据类型

在不知道工作表名称的情况下使用 SSIS 从 Excel 导入数据

SSIS-导入Excel文件时记录行号