mysql - 使用 ssis 结果导入到 sql 以将数据移动到下一列

标签 mysql sql sql-server reporting-services ssis

我目前正在创建一个 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/

相关文章:

sql - 列中什么时候为空值 "safe"?

sql-server - 如何确定插入时哪一列引发算术溢出错误?

mysql - Node | MySQL 多个 WHERE with AND 子句

php - 在 PDO 查询中使用变量值作为 where 语句

sql - 以 COUNT 为条件的 INSERT

mysql - 如何更新具有彼此串联的多行的列

sql - 帮助在 SQL/NoSQL 混合(Sql 服务器/RavenDB)中对 EAV 进行建模

mysql - Excel VBA : recordset joining and performance

MySQL多表关系(代码意见)

sql - 尽管语法不正确,Oracle脚本也不会产生错误。