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