Redshift 命令 - 复制添加带有随机数的列

Posted

技术标签:

【中文标题】Redshift 命令 - 复制添加带有随机数的列【英文标题】:Redshift command - Copy adding a column with random numbers 【发布时间】:2019-03-08 09:39:45 【问题描述】:

我正在从 Redshift 卸载并复制到 S3 -

unload (select * from tbl)
to <S3 location>
credentials <creds>
addquotes escape

copy tbl2
from <S3 location>
credentials <creds>
removequotes escape

我的表格就像 - int, text,text,text .

复制命令是在第一个 int 列中添加随机数,并将进一步的列向右移动,删除最后一列。

有人知道为什么会发生这种情况吗?

原表-

col1 col2 col3 col4 1 abc def ghi jkl 2 mno pqr stu vwx

复制表格-

col1 col2 col3 col4 123 1 abc def ghi 456 2 mno pqr stu

卸载的表是正确的

【问题讨论】:

请问您能否在您的问题中添加一些示例数据 - 处理前后的表格以及 s3 中某些行的原始转储? UNLOAD 文件的内容看起来是否正确? @user2828360 请问你能按照上面的 cmets 更新我们吗? @JonScott 添加了虚拟数据 【参考方案1】:

猜测,有两件事可能是错误的。首先是您的 to 和 from 列顺序不同。

我会试试的

    在 S3 的“S3 位置”打开文件 复制标题列(第 1 行) 编辑列文本,将分隔符更改为“,”(如果还没有)

    将编辑后的列标题粘贴到您的复制命令中

    copy tbl2('文件中的列列表') 从 证书 删除引号转义

    如果您的 S3 文件缺少标题,请返回原始导出过程并找出它是什么。

不太可能,您可能会错过

忽略标题 1

副本上的参数。让我们知道您发现了什么。

【讨论】:

以上是关于Redshift 命令 - 复制添加带有随机数的列的主要内容,如果未能解决你的问题,请参考以下文章

将文件(带有特定后缀)从 S3 复制到 Redshift

Redshift 中的 COPY CSV 命令是不是按标题中定义的顺序加载?

使用大表连接更新 Amazon Redshift 中的列

如何将 CSV 导出复制到添加了新列的 Redshift 表中?

Redshift 复制命令追加、替换或更新插入?

将 S3 复制到 Redshift:字符串长度超过 DDL 长度