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的主要内容,如果未能解决你的问题,请参考以下文章
解决从Excel导入数据库,导入到DataTable时数据类型发生变化的问题(如数字类型变成科学计数法,百分数变成小数)