如何在 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
我正在尝试将具有不同列数的数据框推送到 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 |