Sql AWS红移alter append命令不用于插入数据

Sql AWS红移alter append命令不用于插入数据,sql,amazon-web-services,amazon-redshift,Sql,Amazon Web Services,Amazon Redshift,我必须定期在红移表中插入记录。 所以我选择了这样一种策略:将s3数据复制到stage表中,然后使用ALTERAPPEND命令将stage表数据附加到实际表中。 就我而言 阶段表-URL\u数据\u温度 实际表-URL\u元数据 现在,我使用相同的命令创建了两个表,并且只更改了表名。 例: 但当我尝试使用以下append命令时,它仍会抱怨 alter table _360_model.URL_METADATA append from _360_model.URL_DATA_TEMP; error

我必须定期在红移表中插入记录。 所以我选择了这样一种策略:将s3数据复制到stage表中,然后使用ALTERAPPEND命令将stage表数据附加到实际表中。 就我而言

阶段表-URL\u数据\u温度

实际表-URL\u元数据

现在,我使用相同的命令创建了两个表,并且只更改了表名。 例:

但当我尝试使用以下append命令时,它仍会抱怨

alter table _360_model.URL_METADATA append from _360_model.URL_DATA_TEMP;

error:  Columns don't match.
code:      8001
context:   Column "asset_type" has different attributes in the source table 
and the target table. Columns with the same name must have the same 
attributes in both tables.

我无法理解当我使用几乎相同的命令创建表时,列结构如何会有所不同。

我无法使用您提供的SQL(使用
psql
)重新创建问题


尝试使用
psql
运行SQL,查看您的工具是否以某种方式更改了提交的SQL。

这可能是由于列压缩差异造成的。在copy命令上,是否使用如下所示的选项“computepdate On”?如果是这样的话,那么您的暂存表的列压缩选项可能与目标表不同

copy <table name> from 's3://<data location>'
CREDENTIALS <creds>
region <region>
GZIP
CSV
IGNOREHEADER 1
TIMEFORMAT 'auto' manifest
COMPUPDATE ON;
从's3://'复制
资格证书
区域
GZIP
CSV
信号头1
时间格式“自动”清单
计算更新;
我遇到了类似的问题,并做了以下工作

1) 使用“复制”命令加载数据并启用“计算更新”

见:

2) 加载完成后,使用下面的查询查看应用的自动压缩

select "column", type, encoding, distkey, sortkey
from pg_table_def where tablename = '<table name>';
选择“列”、类型、编码、distkey、sortkey
来自pg_table_def,其中tablename='';
见:

3) 使用与暂存表相同的压缩重新创建目标表

create table <target table name> (
    <column name> <type> encode <encoding>,
    ...
)
创建表(
编码
...
)
见:


其他表属性(如sortkey)需要在暂存表和目标表中匹配。

列名索引是否损坏?索引是保留字,但可能带有引号或其他内容?您是否检查了列编码、分发键等是否相同?尝试运行select trim(tablename)as table,“column”,trim(type)as type,encoding,distkey,sortkey,“notnull”,从pg_table_def中选择tablename in('URL_METADATA','URL_DATA_TEMP');为了比较它们,您的查询对我来说工作得很好,您应该检查您是否以与您在这里提到的相同的方式创建表。
create table <target table name> (
    <column name> <type> encode <encoding>,
    ...
)