0

S3からRedshift ClusterにいくつかのCSVログデータをインポートするためのAWSデータパイプラインをセットアップしました。S3からRedshiftへのAWSデータパイプラインコピーログデータ

私の赤方偏移のデータベーステーブルには、以下の構造を有する:ここでは

CREATE TABLE access_log 
(
    id bigint identity(1, 1), 
    host character varying(64), 
    cf_host character varying(64), 
    xff_host character varying(64), 
    event_time timestamp, 
    method character varying(16), 
    url text, 
    response_code integer, 
    referer text, 
    user_agent text, 
    device_id character varying(40), 
    primary key(id) 
) 
sortkey(id); 

は私のCSVログデータの抽出物である:

"172.20.2.224"、 "ヌル"、 "ヌル"、 "2016 「null」、「null」、「2016-03-20 00:01:28」、「GET」、「/」、「302」、「null」、「null」 「172.20.2.224」、 「GET」、「/」、「200」、「null」、「null」 「172.20.2.224」「null」「null」「2016-03-16 00: "GET"、 "/"、 "302"、 "null"、 "null" "172.20.2.224"、 "null"、 "null"、 "2016-03-16 00:11:33 "、" GET "、"/"、" 200 "、" null "、" null " 「172.20.2.224」「null」「null」「2016-03-16 00:21:28」「GET」「/」「302」「null」「null」 「172.20 「null」「null」「null」「2016-03-16 00:21:33」「GET」「/」「200」「null」「null」

From SQLWorkbenchJ

copy access_log 
from 's3://mylogrepo' 
credentials 
'aws_access_key_id=myaccesskey;aws_secret_access_key=myaccesskeysecret' 
DELIMITER ',' 
REMOVEQUOTES 
TIMEFORMAT 'YYYY-MM-DD HH:MI:SS' 
しかし、赤方偏移コピーアクティビティは、私は次のエラーを取得する実行するときに:私が使用している場合は、次のコピーコマンドのすべてが正常に動作し

[Amazon](500310) Invalid operation: cannot set an identity column to a value; 

私は面白いことは、エラーのスタックトレースからこの行です:

private.com.amazonaws.services.datapipeline.redshift.QueryStatementException: Exception Amazon Invalid operation: cannot set an identity column to a value; while executing START TRANSACTION; INSERT INTO public.access_log SELECT s.* FROM staging s LEFT JOIN public.access_log t ON s."id" = t."id" WHERE t."id" IS NULL; COMMIT; at private.com.amazonaws.services.datapipeline.redshift.RedshiftQueryStatement.(RedshiftQueryStatement.java:43) at private.com.amazonaws.services.datapipeline.redshift.RedshiftQueryStatementFactory.newQueryStatement(RedshiftQueryStatementFactory.java:9) at ... private.com.amazonaws.services.datapipeline.redshift.SqlHelper.prepareStatement(SqlHelper.java:84) at $TaskRunner.run(HeartbeatingTaskRunner.java:34) ... 1 more Caused by: java.sql.SQLException: Amazon Invalid operation: cannot set an identity column to a value; at com.amazon.redshift.client.messages.inbound.ErrorResponse.toErrorException(Unknown Source)

CSVデータのIPを列IDとして解釈する可能性はありますか?

ありがとうございました!

答えて

0

無効なs3列マッピングがあると思われます。列マッピングを共有できますか?

+1

device_id情報をCSVデータにエクスポートするのを忘れていました。コピーコマンドは、CSVデータから9列を10列の表にマップしようとしました。 CSVデータにdevice_id情報を追加した後に動作するようです。ありがとうございました! –

関連する問題