SSIS2005:从具有不一致元数据的多个XL文件/工作表导入

时间:2017-04-04 22:21:27

标签: excel ssis ssis-2005

提前感谢任何人提供的任何帮助,

(前言:我已经熟悉TypeGuessRows注册表调整(我将它设置为0; XL扫描整个列以确定数据类型)和IMEX = 1扩展属性(我默认使用此方法))

我正在为客户开始正在进行的项目:

  • 客户端每年发送10个xlsx文件。
  • 大多数(如果不是全部)文件有12张...每月1张。
  • 所有文件中的所有工作表都具有完全相同的列数,并且完全相同的顺序具有完全相同的列标题。
  • 客户很可能会在未来3年内定期发送新数据(希望采用相同的格式)。

循环浏览多个XL文件,然后循环遍历多个XL工作表不是问题。我过去曾多次这样做过。 XL文件的我的SSIS模板默认以这种方式设置。

我遇到的问题是列的数据类型何时可以从一个工作表更改为工作表。例如,在大多数工作表上都有一个日期列:

  • 没有空/空白日期
  • 所有日期格式为m / d / yyyy
  • XL / SSIS分配日期[DT_DATE] 数据类型

...但是,在同一文件中的某些工作表上,相同的日期列...

  • 没有空/空白日期
  • 大多数日期格式为m / d / yyyy
  • 某些日期格式为一般/数字(2002年11月15日= 37575)
  • XL / SSIS分配 Unicode字符串[DT_WSTR] 数据类型

如果我没弄错的话,当我运行SSIS包时,它会在数据类型发生变化时抛出错误。

是否可以强制传入列的数据类型( OLE DB源的高级编辑器&gt; 输入和输出属性表&gt; 输入和输出< / strong>窗格&gt; OLE DB源输出&gt; 外部列)unicode,以便XL / SSIS想要更改数据类型时包不会出错?这将容纳所有当前文件和任何未来的文件,以防出现相同的不一致格式。

或者我被迫:

  • 将所有常规/数字格式的日期更改为日期格式,以便我可以使用一个SSIS包导入
  • 将所有格式一致且格式不一致的表单分成2个单独的组,以便使用2个不同的SSIS包导入

再次感谢任何人都能提供的帮助,

CTB

1 个答案:

答案 0 :(得分:1)

似乎从一种数据类型切换到另一种数据类型不会引发错误,只是警告...至少从 [DT_DATE] [DT_WSTR] 和回来。

我无法强制 OLE DB源的传入列的数据类型,但我能够将传出列数据类型设置为 [DT_WSTR] OLE DB源的高级编辑器&gt; 输入和输出属性表&gt; 输入和输出窗格&gt; OLE DB源输出&gt; 输出列)。这样,该列中的所有日期都被视为数据流中的unicode文本,无论其来源如何。

这似乎可以解决问题。我只需要一个导入包来导入两种类型的工作表/文件。

我希望将来帮助别人......