在红移中复制JSON列
我必须从s3导入一个红移的csv文件。 表中的一列是JSON格式 在使用COPY命令时,出现以下错误-在红移中复制JSON列,json,copy,amazon-redshift,Json,Copy,Amazon Redshift,我必须从s3导入一个红移的csv文件。 表中的一列是JSON格式 在使用COPY命令时,出现以下错误- Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS] 使用的命令是- COPY api_log FROM 's3://X/Y' credentials 'aws_access_key_id=;aws_secret_access_key=' delimiter ',' maxerror as 250 TRUNCATECOLUM
Invalid timestamp format or value [YYYY-MM-DD HH24:MI:SS]
使用的命令是-
COPY api_log FROM 's3://X/Y' credentials 'aws_access_key_id=;aws_secret_access_key=' delimiter ',' maxerror as 250 TRUNCATECOLUMNS;
承诺
样本数据为-
c1 c2 c3
X Y {a:b,c:d}
如果将引号添加到json,并将
REMOVEQUOTES
删除到副本中,则它可以工作
将测试文件放入s3:
echo x,y,'"{a:b,c:d}"' | aws s3 cp - s3://[bucket]/json/test_file.csv
创建表:
CREATE TABLE IF NOT EXISTS api_log
(c1 varchar,
c2 varchar,
json_colum varchar(65535));
负载:
或者,如果不喜欢引号,可以使用制表符或其他一些不在数据中的字符。例如:
echo -e "x\ty\t{a:b,c:d}" | aws s3 cp - s3://[bucket]/json/test_file.csv
然后:
无论哪种方式,您都会得到:
select * from api_log;
c1 | c2 | json_colum
----+----+------------
x | y | {a:b,c:d}
COPY api_log
FROM 's3://[bucket]/json/'
CREDENTIALS 'aws_access_key_id=;aws_secret_access_key='
delimiter '\t'
maxerror as 250
TRUNCATECOLUMNS
REMOVEQUOTES;
select * from api_log;
c1 | c2 | json_colum
----+----+------------
x | y | {a:b,c:d}