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 次 |
最近记录: |