我们正在使用数据管道将数据从s3推送到亚马逊redshift表。我们正在使用JSON推送数据
{
"jsonpaths": [
"$['data1']",
"$['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']['data1']",
"$['data1']",
"$['data1']",
"$['data1']",
"$['data1']['data1']",
"$['data1']['data1']"
]}
我最近想在我的redshift表中添加created_at,该表应采用当前时间戳。我已将redshift表中的列添加为当前时间戳的默认值。我没有在此列的json映射文件中定义(出于明显的原因)。但是管道未能说明列数和json映射不匹配。尝试读取多个文档,但尚未为此找到合适的解决方案。谁能帮助我如何使用aws数据管道将默认的当前时间戳从s3插入redshift表?
答案 0 :(得分:0)
copy
命令中有一个选项可以指定您希望在ETL中使用的填充数据的列,该列将填充default
的任何skipped columns
值。
COPY my_tablename
(C1
,C2
,C3,...
)
FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';
因此,即使我未测试该解决方案,
copy My_table(C1,C2,C3,...)
from 's3://mybucket/category_object_paths.json'
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
json 's3://mybucket/category_jsonpath.json';
评论后编辑
有transformSql
个选项,您可以使用RedshiftCopyActivity
复制选择的列。
这里是参考, http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-object-redshiftcopyactivity.html