如何将 CSV 导出复制到添加了新列的 Redshift 表中?

Posted

技术标签:

【中文标题】如何将 CSV 导出复制到添加了新列的 Redshift 表中?【英文标题】:How to COPY CSV exports into a Redshift table that had a new column added? 【发布时间】:2015-12-03 17:41:16 【问题描述】:

我们在 S3 中有许多 CSV 文件,但其中一个表添加了新列,因此在导入这些 CSV 文件时,我们收到错误“未找到分隔符。新列可以为空并添加到末尾表,所以我希望有一种方法可以为新表列导入带有 NULL 的旧 mysql 导出。

有没有办法在不编辑所有导出文件以添加该列的情况下执行此操作?

【问题讨论】:

【参考方案1】:

您可以在 COPY 命令中映射列:

http://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-column-mapping.html

【讨论】:

【参考方案2】:

您可以在 COPY 命令中指定文件中存在的列(与它们在 CSV 文件中的顺序相同)。使用 EMPTYASNULL 参数,没有数据的列将获得 NULL 值。

COPY table_name (column_a, column_b)
FROM 's3://xxx'
CSV
[...]
EMPTYASNULL
;

【讨论】:

以上是关于如何将 CSV 导出复制到添加了新列的 Redshift 表中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将包含 1 列的 phpmyadmin 的 csv 文件导入到我的 mysql 数据库中?

如何将新列动态添加到 bigquery 中已存在的表..?

如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]

如何使用awk将带有标题的新列添加到csv

如何将具有值的行/列添加到数据表 csv 导出

Scala DataFrame,将非空列的值复制到新列中