SSIS 是否支持加载每行列长不同的文件?
Can SSIS support loading of files with varying column lengths in each row?
目前我每天收到大约 75 万行的文件,每行的开头都有一个 3 个字符的标识符。
对于每个标识符,列数可以更改但特定于标识符(例如,SRH 始终有 6 列,AAA 始终有 10 列,依此类推)。
我希望能够通过 SSIS 将此文件自动生成 SQL table。
这个解决方案目前是在 MSACCESS 中构建的,使用 VBA 只是使用 CASE 语句遍历记录集,然后将记录写入相关的 table。
我一直在阅读 SSIS 中的 BULK INSERT、BCP(w/Format 文件)和条件拆分,但是我似乎总是陷入甚至将文件加载为 SSIS 错误的第一个障碍,原因是可变列布局。
数据文件是竖线分隔的,看起来与下面类似。
AAA|20180910|POOL|OPER|X|C
SRH|TRANS|TAB|BARKING|FORM|C|1.026
BHP|1
*BPI|10|16|18|Z
BHP|2
*BPI|18|21|24|A
(* 我添加了 * 以表明这些是父记录的子记录,在这种情况下,BHP 可以在它下面有多个 BPI 记录)
我希望能够将 TXT 文件加载到暂存中 table,然后我可以编写 TSQL 来遍历记录并将它们解析为相关的 tables(AAA - tblAAA,SRH - tblSRH...)
我认为您应该将每一行读取为 DT_WSTR 类型和长度 = 4000 的一列,然后您需要在脚本组件中实现使用 vba 编写的相同逻辑(VB.NET / C#), 有类似的帖子可以给你一些启示:
- How to load mixed record type fixed width file? And also file contain two header
目前我每天收到大约 75 万行的文件,每行的开头都有一个 3 个字符的标识符。
对于每个标识符,列数可以更改但特定于标识符(例如,SRH 始终有 6 列,AAA 始终有 10 列,依此类推)。
我希望能够通过 SSIS 将此文件自动生成 SQL table。
这个解决方案目前是在 MSACCESS 中构建的,使用 VBA 只是使用 CASE 语句遍历记录集,然后将记录写入相关的 table。
我一直在阅读 SSIS 中的 BULK INSERT、BCP(w/Format 文件)和条件拆分,但是我似乎总是陷入甚至将文件加载为 SSIS 错误的第一个障碍,原因是可变列布局。
数据文件是竖线分隔的,看起来与下面类似。
AAA|20180910|POOL|OPER|X|C
SRH|TRANS|TAB|BARKING|FORM|C|1.026
BHP|1
*BPI|10|16|18|Z
BHP|2
*BPI|18|21|24|A
(* 我添加了 * 以表明这些是父记录的子记录,在这种情况下,BHP 可以在它下面有多个 BPI 记录)
我希望能够将 TXT 文件加载到暂存中 table,然后我可以编写 TSQL 来遍历记录并将它们解析为相关的 tables(AAA - tblAAA,SRH - tblSRH...)
我认为您应该将每一行读取为 DT_WSTR 类型和长度 = 4000 的一列,然后您需要在脚本组件中实现使用 vba 编写的相同逻辑(VB.NET / C#), 有类似的帖子可以给你一些启示:
- How to load mixed record type fixed width file? And also file contain two header