【问题标题】:SSIS Excel Data Import - Mixed data type in RowsSSIS Excel 数据导入 - 行中的混合数据类型
【发布时间】: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";

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

请直接。谢谢

【问题讨论】:

  • “失败”是什么意思?你有错误吗?

标签: sql-server excel ssis sqldatatypes


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 2012-08-28
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多