【问题标题】:How to upload my csv file into Redshift/SQL?如何将我的 csv 文件上传到 Redshift/SQL?
【发布时间】:2018-09-07 14:12:52
【问题描述】:

我有一个大的 CSV 文件,需要进入 Redshift。

它有大约 500 万行。几个问题:

1) 文件的前 10 行是我想要删除/排除的乱码

2) 每当我尝试上传 csv 文件时,我总是遇到这个奇怪的故障,它说它加载成功,但上传了 0 行。我解决此问题的方法是重新格式化 CSV 中的列(将数字格式化为数字,将日期格式化为自定义日期“YYYY-MM-DD”),然后重新保存它。无论出于何种原因,它在那之后都会起作用。

有没有人有类似的问题?将这个 csv 文件转换为 redshift 的最佳方法是什么?

UPDATE - 所以我使用 COPY 命令并将我的 csv 文件从 S3 复制到 Redshift 表中。但是,我收到一个错误,我查看 stl_load_errors 并且“colname”和“raw_field_value”不匹配。这真的很奇怪。例如,“colname”将类似于“name”,但“raw_field_value”将是电话号码。我仔细检查了我的 csv 文件,但事实并非如此。有什么想法吗?这不仅仅是 1 次出现,而是很多次,而且有几行被混淆了。

【问题讨论】:

  • 使用 ssis 来做这个
  • SSMS 有一个导入向导,可以选择跳过初始 [number] 行。 Redshift 有类似的东西吗?
  • 您的问题提到了 CSV,但您已用“Excel”标记了此问题 - 您使用的是哪种文件格式?您不能将 Excel 工作簿直接导入 Redshift,您需要先将相关工作表保存为 CSV 文件。此外,您应该添加文件中的数据示例(以说明正在使用的格式,而不是实际数据,只是具有相同 CSV 格式的内容)并说明您正在使用哪些 COPY 选项 - 没有这些很难说可能会发生什么导致你的问题。
  • 假设您实际使用的是 CSV 文件,请检查 COPY 语句中指定的 CSV 选项是否与文件格式匹配 (docs.aws.amazon.com/redshift/latest/dg/…) - 特别是您指定的是 CSV 还是 DELIMITER,无论是您需要指定 QUOTE 或 ESCAPE。
  • 跳过前 10 行使用 IGNOREHEADER 10

标签: sql excel amazon-redshift


【解决方案1】:

Redshift 需要正确格式的数据才能加载。正如您提到的,您的数据在开头有乱码行,您应该修复这些行或通过指定 IGNOREHEADER x 跳过加载它们,其中 x 是您需要跳过的起始行数。
您遇到的错误是因为您的数据在未双引号的列中有额外的列或更少的列或字段分隔符(逗号)。

为了将COPYing 数据保留到 Redshift 中,即使遇到错误,您也可以在 Redshift COPY 命令中添加MAXERROR x。它会在停止复制之前跳过“x”个错误。

【讨论】:

    【解决方案2】:

    我有同样的问题。您是否将数据逐块输出到 csv 文件中以创建多个 csv 文件(这是 Redshift 推荐的)?在这种情况下,您需要确保每个块的列输出顺序相同。

    【讨论】:

      猜你喜欢
      • 2012-05-05
      • 2013-12-17
      • 2014-01-12
      • 2016-02-16
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 1970-01-01
      相关资源
      最近更新 更多