簡體   English   中英

AWS Redshift alter append 命令不適用於插入數據

[英]AWS Redshift alter append command not working for inserting data

我必須定期將記錄插入 Redshift 表。 所以我選擇了將 s3 數據復制到階段表中,然后使用 alter append 命令將階段表數據復制到實際表中的策略 append。 就我而言。

階段表 - URL_DATA_TEMP

實際表 - URL_METADATA

現在,我使用相同的命令創建了兩個表,並且只更改了表名。 前任:

CREATE TABLE _360_model.URL_METADATA
(
URL VARCHAR(8000),
URL_MD5 VARCHAR(300),
INDEX VARCHAR(200),
ASSET_TYPE VARCHAR(200)
);

CREATE TABLE _360_model.URL_DATA_TEMP
(
URL VARCHAR(8000),
URL_MD5 VARCHAR(300),
INDEX VARCHAR(200),
ASSET_TYPE VARCHAR(200)
);

仍然當我嘗試使用以下 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.

我無法理解當我使用幾乎相同的命令創建表時,列結構怎么會不同。

這可能來自列壓縮差異。 在復制命令中,您是否使用“COMPUPDATE ON”選項,如下所示? 如果是這樣,您的臨時表的列壓縮選項可能與目標表不同。

copy <table name> from 's3://<data location>'
CREDENTIALS <creds>
region <region>
GZIP
CSV
IGNOREHEADER 1
TIMEFORMAT 'auto' manifest
COMPUPDATE ON;

我遇到了類似的問題並做了以下事情。

1)使用復制命令加載數據並打開COMPUPDATE

請參閱: http//docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-load.html#copy-compupdate

2)加載完成后,使用下面的查詢查看應用的自動壓縮。

select "column", type, encoding, distkey, sortkey
from pg_table_def where tablename = '<table name>';

請參閱: http//docs.aws.amazon.com/redshift/latest/dg/t_Compressing_data_on_disk.html

3)使用與登台表相同的壓縮重新創建目標表。

create table <target table name> (
    <column name> <type> encode <encoding>,
    ...
)

請參閱: http//docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html

其他表屬性(如sortkey)需要在staging和target表中匹配。

我無法使用您提供的SQL重新創建問題(使用psql )。

嘗試使用psql運行SQL,看看你的工具是否以某種方式改變了提交的SQL。

這可能是由於目標表和暫存表的壓縮類型不同所致。 有時由於目標表和登台表中的排序鍵不同,它會發生。 解決步驟:

  1. 在 redshift 中:顯示表“目標表名稱”。 這樣會生成目標表名的DDL語句

  2. 刪除臨時表:drop table 'staging table name'

  3. 使用1命令生成的DDL命令重新創建暫存表,只需將表名替換為暫存表名即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM