我有 2 个大文件,一个 Excel 电子表格和一个 csv 文件,这些文件很乱,但仍然需要上传到表格中。我正在学习如何使用 SSIS。假设列和行看起来像这样..
第一个 Excel 电子表格(文件扩展名 .xlxs)...
ID Name GroupName City Time Price Date
A1 South Group1 London 10/06/2018 $4.50 13.30
A2 North Group2 New York $60 10/07/2018 09:00 AM
图1
第二个 Excel 电子表格(文件扩展名 .csv)...
ID Name GroupName City Date Time Price
A3 East Group3 Paris 09/09/2017 $5.00 03:00 AM
A4 West Group4 Berlin 01/05/2018 $12.50 18:00
图2
如果您查看图 1 中的 ID A2,您将在不同的列中看到日期为 9.00,然后是 AM。你如何解决这样的问题?这是一个示例,因此每列中的时间数据是随机不同的。另请注意图 2 中的 A4
我对脚本任务
和Foreach循环容器
有一定程度的熟悉。
我在网上搜索发现this网站....
这就是我正在寻找的东西。
现在已经使用这些列名称创建了一个表
ID, Name, GroupName, City, Date, Time and Price.
所以理想情况下,当数据加载到表中时,它应该看起来像这样......
ID Name GroupName City Date Time Price
A1 South Group1 London 10/06/2018 13.30 $4.50
A2 North Group2 New York 10/07/2018 09:00AM $60
A3 East Group3 Paris 09/09/2017 03:00AM $5.00
A4 West Group4 Berlin 01/05/2018 18:00 $12.50
我不知道如何解决这个问题。
请注意:我只想知道我需要使用哪些 SSIS 工具箱组件。一旦我知道了,我会尝试解决这个问题。这就是没有代码示例的原因。
提前致谢。
更新
谢谢哈迪。如果没有人介意,我会保持此线程开放,并在 SSIS 在 VS 2019 中完全可用时进行更新,并有机会找到解决方案。
最佳答案
我认为没有简单的解决方案。但我会尝试给出一些建议:
- 将 Excel 文件转换为 csv 文件
- 在平面文件连接管理器中,仅在类型为 DT_STR 且长度 = 4000 的列上定义
- 在数据流任务中添加一个脚本组件来分割每一行并验证每个列值并将其分配给相关的输出列
您可以引用以下答案来了解更多信息,因为它包含有关当数据结构不很好时如何从平面文件读取数据的有用信息(即使情况不同)
关于excel - 当平面文件中的列和行不匹配时,如何解决(使用)ETL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651651/