У меня настроен конвейер данных AWS, чтобы импортировать некоторые данные из CSV-журнала из S3 в кластер Redshift.Данные журнала данных AWS Data Transfer от S3 до Redshift
Моя таблица базы данных Redshift имеет следующую структуру:
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 «0», «0», «0», «0», «0», «0», 16 00:01:33 "," GET ","/"," 200 "," null "," null " " 172.20.2.224 "," null "," null "," 2016-03-16 00: 11:28 "," 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 .2.224 "," null "," null "," 2016-03-16 00:21:33 "," GET ","/"," 200 "," null "," null "
От 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'
Но когда Redshift копировать деятельность бежит, я получаю следующее сообщение об ошибке:
[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)
Возможно ли, что IP из моих данных CSV будет интерпретироваться как идентификатор столбца?
Спасибо!
Я забыл экспортировать информацию device_id в мои данные CSV. Таким образом, команда копирования попыталась отобразить 9 столбцов из CSV-данных в 10 столбцов. После того, как я добавил данные device_id в мои данные CSV, похоже, работает. Спасибо! –