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

Posted

技术标签:

【中文标题】SSIS Excel 数据导入 - 行中的混合数据类型【英文标题】:SSIS Excel Data Import - Mixed data type in Rows 【发布时间】:2017-04-27 12:54:19 【问题描述】:

我正在尝试使用 SSIS pkg 导入 excel 数据,但它正在更改数据类型并转换为其他带十进制的格式。

我从设定范围内提取数据

示例: 范围A5:AB20

我的数据A5栏(M)=1.2

SSIS 导入类似120000.001237

我是SSIS来导入A5 = 1.2

我试过了,但失败了……

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ABCDPrograms.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1";

原始数据是从某些旧系统导入的,我无法在那里进行更改。

请直接。谢谢

【问题讨论】:

“失败”是什么意思?你有错误吗? 【参考方案1】:

您需要在 Excel 电子表格和数据库之间的数据流任务中使用派生列转换:

Excel 文件,我知道您说您的电子表格显示的是 1.2,但我看不到单元格中的内容,因此看起来较大的值是单元格中的值:

派生转换任务,将值(除以100000)四舍五入到小数点后1位,替换列值:

生成的数据库条目,此列的数据类型设置为 DECIMAL(8,1) 或您需要的任何前面的数字):

希望有帮助

【讨论】:

谢谢 TJB - 我应该添加 .. 在第 5 行之前和第 20 行之后还有很多其他数据。这些值是在工作表(甚至其他工作表)的其他地方计算的。第 5-20 行是“链接”并显示 1.2(如果单击它将显示带有链接单元格或工作表的公式)所以实际上,这就像报废曾经显示的内容(即 1.2) 好的,但似乎 120k 值正在传递给 SSIS 包。假设您正确识别了 SSIS 包中电子表格中的列,并且您已正确设置 SQL 表,那么这应该仍然有效。另一种可能性是,当您应该选择 1.2 列时,您错误地将其中包含 120k 的单元格映射到 SQL 列。让 120k 看起来像 1.2,而不是公式。 测试你的解决方案,会让你知道结果..谢谢TJB

以上是关于SSIS Excel 数据导入 - 行中的混合数据类型的主要内容,如果未能解决你的问题,请参考以下文章

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

SSIS 未正确从 Excel 导入 TEXT 列(整数导致 NULL 值)

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中附源代码下载) 转

SSIS错误导入Excel日期(截断错误)

无法使用 SSIS 快速加载选项从 Excel 源加载 Netezza 中的数据

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