Elm*_*Elm 8 postgresql amazon-redshift
我用命令复制:
从t1复制t1a(c1,c3)
我预计它将从t1复制c1和c3并将默认的空值放在c2中,因此t1a中的一行可能看起来像(c1_rowX,null,c3_rowX).
相反,我得到一个类型错误,因为它将来自t1的c2(字符串类型)数据复制到t1a的c3(int类型).
当我没有指定列时,copy命令工作正常:
从t1复制t1a
我已经包含了一个指向redshift copy命令文档的链接:
http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html
Tom*_*icz 11
如果要跳过预处理部分,可以定义要跳过的列CHAR(1),然后使用命令TRUNCATECOLUMNS参数COPY:
CREATE TABLE t1a (
c1,
c2 CHAR(1),
c3
);
COPY t1a FROM t1 TRUNCATECOLUMNS
Run Code Online (Sandbox Code Playgroud)
该TRUNCATECOLUMNS会忽略在导入期间在表模式长于定义的所有数据,因此在该列中的所有数据将被截短成1个字符.
这只是一个黑客,建议使用预处理输入文件,但有时候只需要一个hack就可以了.
不直接支持详细的列映射COPY,除非 Amazon/ParAccel 在其 PostgreSQL 分支中添加了一些不在主线中的额外内容。
在这种情况下,您通常要做的就是使用脚本按摩/填充数据 - 读取 CSV,根据需要对其进行转换,然后通过 PostgreSQL 连接将该行发送到命令COPY ... FROM STDIN。
或者,您可以将COPY整个原始 CSV 转换为一个表,然后将该数据转换INSERT INTO ... SELECT为真正的目标表。
| 归档时间: |
|
| 查看次数: |
6603 次 |
| 最近记录: |