我正在尝试通过Python脚本将数据从S3复制到亚马逊redshift
command =
("COPY {qualname}\n"
"FROM 's3://{keypath}' \n"
"CREDENTIALS 'aws_access_key_id={key};aws_secret_access_key={secret}' "
"{gzip} "
"{null_as} "
#"{emptyasnull}"
"CSV IGNOREHEADER 1;").format(qualname=qualname,
keypath=url,
key=aws_access_key_id,
secret=aws_secret_access_key,
gzip="GZIP " if compress else " ",
null_as="NULL AS '{}'".format(null_as) if null_as is not None else "",
emptyasnull="EMPTYASNULLL " if emptyasnull else " ")```
keypath
是s3:// {bucket-name} / daily-sku-benefits / 2018-12-27 qualname
是表名但是我遇到错误:
(psycopg2.InternalError)装入表'daily_sku_benefits'失败。检查“ stl_load_errors”系统表以了解详细信息。 [SQL:“ COPY daily_sku_benefits \ nFROM's3:// {bucket-name} /daily-sku-benefits/2018-12-27.csv.gzip'\ nCREDENTIALS'aws_access_key_id = {访问密钥}; aws_secret_access_key = {秘密- key} GZIP CSV IGNOREHEADER 1;“](此错误的背景位于:http://sqlalche.me/e/2j85)
在检查stl_load_error
时出现此错误:
Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]
有人对此有任何想法吗?
答案 0 :(得分:1)
错误清楚地说明了解决问题的方法,您的timestamp
数据必须为[YYYY-MM-DD HH24:MI:SS]
格式。
您的数据应如下所示(我也将分隔符作为pipe(|),尽管也可以),
Column1|Columnd2|created_at
Test1|Test description1|2018-05-10 23:54:51
Test2|Test description2|2018-05-17 22:15:53
例如具有结构的表-
create table daily_sku_benefits(
Colunm1 varchar(55),
Colunm2 varchar(255),
updated_at timestamp);
您可以应用另一个技巧,因为完整数据可能不是bad
,可能是some percentage
,因此您可以在{{ 1}}命令。 Maxerror的解释在这里。
希望有帮助。