【发布时间】:2019-07-27 16:22:09
【问题描述】:
你们能否帮助我(为我指明正确的方向)如何在 SSIS 中实现以下目标。
所以,我有一个看起来像这样的平面文件
ColumnA ColumnB ColumnC ColumnD ColumnN
1 x APPLE Random1 MoreRandomData1
2 y ORANGE Random2 MoreRandomData2
3 z OTHER Random3 MoreRandomData3
...我需要将这些数据按以下格式存储到表格中
ColumnA, ColumnB, BigBlurColumn
1 x ColumnC:APPLE, ColumnD:Random1, ColumnN:MoreRandomData1
2 y ColumnC:ORANGE, ColumnD:Random2, ColumnN:MoreRandomData2
3 z ColumnC:OTHER, ColumnD:Random3, ColumnN:MoreRandomData3
这是我的问题:
1. 如何读取平面文件的标题/列?
2. 是否可以旋转#1的结果
如果我能够同时操作 #1 和 #2,那么我在 SSIS 中进行重置对我来说相当容易,显然我可以编写这些脚本,但是我的客户坚持使用 SSIS,因为这是标准 ETL 工具。
关于如何实现上述场景的任何想法?
谢谢
【问题讨论】:
-
总是有 5 列还是可能更多或更少?我只是将批次导入到一个 5 列的 varchar 临时表中,但取消选中标题,以便它导入标题,就好像它们是数据一样。将标识列添加到临时表中,以便对行进行编号。第 1 行始终是标题。然后使用 T-SQL 执行其他所有操作。
-
@Nick.McDermaid 平面文件的形状发生变化,除了前两列是必填字段
-
在这种情况下,您需要一个只有一列的临时表,您将整行加载到该表中,然后使用 T-SQL 字符串函数拆分列。或者如果您更喜欢 .Net,请遵循 @Hadi 的建议并使用脚本转换
标签: csv ssis etl flat-file ssis-2017