我目前正在创建一个 ETL 包,它将数据从 .csv 文件导入数据库。我当前的问题是当我尝试导入数据时,有些行不在它们应该在的列上。请看下面我的例子:
这是正确的输出
Item No | Total Amount | No. of Lines | Time Received | Date Received
1 | 575.85 | 1 | 13:01:35 | 2/16/16
一些数据变成了这样:
项目编号 |总金额 |行数 |收到时间 |收到日期
NULL 1 NULL 1 13:01:35
看,它移到了不应该的列。 希望你明白我的意思:( 请帮助我,因此我开始头疼。 :( 谢谢。
最佳答案
检查文件中是否有多余的逗号。如果有,那么这些选项之一就是您需要做的:
- 要求提供者使用不同于逗号的分隔符。我们坚持 | 作为分隔符。
- 要求提供商使用 "作为文本限定符
- 要求文件提供者清除数据中的逗号 发送之前。
- 请求提供商为您提供一些其他类型的文件,因为 CSV 是 由于这个原因,第二个最糟糕的进口类型(Excel 是 最差)。带有 | 的 .txt 文件定界符最不可能导致 这类导入问题。
- 编写一个程序,删除所有具有错误数量的行 列并将它们置于异常中,然后创建一个流程来 清理该数据并将其导入。如果 提供商无法调整他的流程来为您提供正确的文件。它会 需要相当长的时间来做。如果提供商为 ETL 付费 发展,这样做在经济上不符合他的最佳利益。通常,一旦我向客户解释这类事情要贵得多,他们就会非常愿意修复他们的错误文件。
关于mysql - 使用 ssis 结果导入到 sql 以将数据移动到下一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997125/