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 导入 TEXT 列(整数导致 NULL 值)
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中附源代码下载) 转