【问题标题】:Copying column data from s3 in a specific order按特定顺序从 s3 复制列数据
【发布时间】:2020-04-15 14:02:08
【问题描述】:

您好,我用来检索数据的供应商决定在不维护列顺序的情况下插入一个全新的列到他们放在我的 s3 存储桶中的 csv 文件中,导致我的日常工作失败。我在 alter 语句中使用了将新列(channel_name)添加到表的末尾并更新了我的复制语句以指定列映射,但我仍然收到相同的错误消息。

COPY myschema.chat_msg
(direction,text,channel,"user",date,sentiment,tags,filters,source_link,chatdesk_trends_message_id,chatdesk_trends_link,channel_name)
FROM 's3://myfile.csv'
CREDENTIALS 'MY CREDENTIALS
IGNOREHEADER 1
DATEFORMAT 'auto'
TIMEFORMAT 'auto'
MAXERROR 0
CSV
region as 'us-east-1'

脚本在用户列上失败,错误原因是无效数据。在“通道”列之后插入“通道名称”列,导致数据向右移动。

【问题讨论】:

    标签: sql amazon-s3 amazon-redshift


    【解决方案1】:

    我对 CSV 和脚本中的列顺序有些困惑。是否将 channel_name 添加为 CSV 的最后一列?还是在频道栏后面加的?

    如果您的 csv 在频道之后有 channel_name,那么您必须按照与 csv 相同的顺序写入列,以便复制以匹配列。当使用副本从平面文件(例如在 Amazon S3 存储桶中)加载时,它们的顺序必须与源数据的顺序相匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多