AWS Data Pipeline的默认日期时间

时间:2018-06-21 07:07:04

标签: mysql amazon-web-services amazon-redshift amazon-data-pipeline aws-data-pipeline

我们正在使用数据管道将数据从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表?

1 个答案:

答案 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