提前感谢任何人可以提供的任何帮助,
(前言:我已经熟悉 TypeGuessRows 注册表调整(我将其设置为 0;XL 扫描整个列以确定数据类型)和 IMEX=1 扩展属性(我默认使用它))
我正在为客户开始一个正在进行的项目:
- 客户发送 10 个 xlsx 文件,每年 1 个。
- 大多数(如果不是全部)文件有 12 张……每月 1 张。
- 所有文件中的所有工作表都具有完全相同的列数,列标题完全相同,顺序完全相同。
- 客户很可能会在未来 3 年内定期发送新数据(希望采用相同的格式)。
循环通过多个 XL 文件,然后循环通过多个 XL 表不是问题。我过去做过很多次。默认情况下,我的 XL 文件的 SSIS 模板是这样设置的。
我遇到的问题是列的数据类型可以从一张纸到另一张纸改变。例如,在大多数工作表上,日期列:
- 没有 NULL/空白日期
- 所有日期格式为 m/d/yyyy
- XL/SSIS 分配日期 [DT_DATE]数据类型
...但是,在同一文件中的某些工作表上,同一日期列...
- 没有 NULL/空白日期
- 大多数日期格式为 m/d/yyyy
- 一些日期格式为一般/数字(2002 年 11 月 15 日 = 37575)
- XL/SSIS 分配Unicode 字符串 [DT_WSTR]数据类型
如果我没记错的话,当我运行 SSIS 包时,当数据类型发生变化时它会抛出错误。
是否可以强制传入列的数据类型(OLE DB 源的高级编辑器>输入和输出属性表 >输入和输出窗格 > OLE DB 源输出>外部列)为 unicode,以便在 XL/SSIS 时包不会出错想改变数据类型?这将容纳所有当前文件和任何未来文件,以防出现相同的不一致格式。
或者我是否被迫:
- 将所有通用/数字格式的日期更改为日期格式,以便我可以使用一个 SSIS 包导入
- 将所有格式一致和格式不一致的工作表分成 2 个单独的组,以便使用 2 个不同的 SSIS 包导入
再次感谢任何人提供的任何帮助,
CTB