2017-06-21 8 views
1

データを挿入するために働いていないappendコマンドを変更します。 そこで私はs3データをステージテーブルにコピーし、alter appendコマンドを使用して実際のテーブルにステージテーブルデータを追加する戦略を選択しました。 私の場合。AWS赤方偏移、私は定期的に赤方偏移のテーブルにレコードを挿入する必要が

ステージテーブル - 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) 
); 

はまだ私は、コマンドを追加し、次の使用しようと、それは文句を言います。

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. 

私はテーブルを作成するためにほとんど同じコマンドを使用したとき、どのように列構造が異なる可能性があるのか​​理解できません。

+2

列名INDEXスポイリングのですか? INDEXは予約語ですが、引用符で囲まれている可能性がありますか? –

+0

列のコーディング、配布キーなどが同一であることを確認しましたか? ( 'URL_METADATA'、 'URL_DATA_TEMP')でpg_table_defテーブル名から "NOTNULL"、タイプ、 エンコーディング、distkey、ソートキーとして(タイプ)をトリム、テーブル、 "列" として選択トリム(テーブル名)を実行してみてください。それらを比較する。 – Nathan

+0

あなたのクエリは私にとってはうまくいくので、ここで述べたのと同じ方法でテーブルを作成していることを確認する必要があります。 – Yankee

答えて

0

私はあなたが(psqlを使用して)提供してきましたSQLの問題を再作成することはできませんよ。

は、あなたのツールはいくつかの方法で提出したSQLを変更しているかどうかを確認するためにpsqlであなたのSQLを実行してみてください。

1

これは、カラム圧縮の違いに由来してもよいです。 copyコマンドで、以下に示すように "COMPUPDATE ON"オプションを使用していますか?その場合は、ステージングテーブルの列圧縮オプションがターゲットテーブルと異なる可能性があります。

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

私も同様の問題が発生し、以下のことが起こりました。 copyコマンドと

1)負荷データと

を参照してください。COMPUPDATEを回す:負荷のafer 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>, 
    ... 
) 

参照:SORTKEYはステージングとターゲット表の両方に一致する必要がありますようhttp://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html

他のテーブルには、そのような属性。

関連する問題