如何在 redshift 中创建临时 table 以加载 csv 中列数不同的 csv 数据?

How to create a temp table in redshift to load csv data with varying number of columns in csv?

我正在尝试将具有不同列数的数据框推送到 aws redshift。

这是数据帧头:

col1    col2    col3

我已经创建了一个临时 table 使用类似这样的东西:

DROP TBALE TEMP;
CREATE TABLE temp (
    col1 int,
    col2 int,
    col3 int
);

但现在数据框有两个新列,并且列数不断变化。

如何根据更改的数据框列删除创建此 table 临时文件

col1    col2    col3   col4    col5

有什么方法可以一次解决这个问题,还是每次读取数据时我都继续编辑 ddl

假设您正在通过 S3 的 COPY 命令加载数据,也许您可​​以尝试创建一个 table,其中包含您希望在 CSV 文件中接收的最大列数,然后使用标志填充记录 (https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html#copy-fillrecord)

这样如果文件包含的列较少,其他列将具有NULL值。 例如,如果您的文件有 3 列,但 TEMP table 有 5:

col1 col2 col3 col4 col5
2 5 6 NULL NULL