- 我有一个 .csv 表 (t1),其中包含以下列:亚马逊 S3 存储中的 c1、c2、c3
- 我想将其复制到亚马逊红移中
- 我创建包含以下列的表:c1、c2、c3,其中所有列均可为空
-
我用命令复制:
复制 t1a (c1,c3)
从 t1
我预计它会从 t1 复制 c1 和 c3 并将默认的 null 值放入 c2 中,因此 t1a 中的一行可能看起来像 (c1_rowX, null, c3_rowX)。
相反,我收到类型错误,因为它将 t1 中的 c2(字符串类型)数据处理为 t1a 的 c3(int 类型)。
-
当我不指定列时,复制命令工作正常:
复制 t1a
从 t1
我提供了 redshift copy 命令文档的链接:
http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html
如果要跳过预处理部分,可以将要跳过的列定义为CHAR(1)
然后使用TRUNCATECOLUMNS
参数aCOPY
命令:
CREATE TABLE t1a (
c1,
c2 CHAR(1),
c3
);
COPY t1a FROM t1 TRUNCATECOLUMNS
The TRUNCATECOLUMNS
在导入期间忽略比表架构中定义的长度长的所有数据,因此该列中的所有数据将被截断为 1 个字符。
这只是一种黑客攻击,建议对输入文件进行预处理,但有时只需要黑客攻击即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)