在redshift postgresql中我可以跳过具有复制功能的列

在redshift postgresql中我可以跳过具有复制功能的列,第1张

概述>我有一个带有列的.csv表(t1):亚马逊S3存储中的c1,c2,c3 >我想将其复制到亚马逊红移中 >我使用列创建表:c1,c2,c3,其中所有列都可以为空 >我用命令复制: 复制t1a(c1,c3) 从t1 >我预计它会从t1复制c1和c3并将默认的空值放在c2中,因此t1a中的一行可能看起来像(c1_rowX,null,c3_rowX). >相反,我得到一个类型错误,因为它将来自t1的c2 >我有一个带有列的.csv表(t1):亚马逊S3存储中的c1,c2,c3
>我想将其复制到亚马逊红移中
>我使用列创建表:c1,c3,其中所有列都可以为空
>我用命令复制:

复制t1a(c1,c3)
从t1
>我预计它会从t1复制c1和c3并将默认的空值放在c2中,因此t1a中的一行可能看起来像(c1_rowX,null,c3_rowX).
>相反,我得到一个类型错误,因为它将来自t1的c2(字符串类型)数据复制到t1a的c3(int类型).
>当我没有指定列时,copy命令工作正常:

复制t1a
从t1
>我已经包含了一个指向redshift copy命令文档的链接:

http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

>主要问题是我使用指定列的问题.谢谢

如果要跳过预处理部分,可以将要跳过的列定义为CHAR(1),然后将TruncATEColUMNS参数用于copY命令:
CREATE table t1a (  c1,c2 CHAR(1),c3);copY t1a FROM t1 TruncATEColUMNS

TruncATEColUMNS忽略导入期间比表模式中定义的更长的所有数据,因此该列中的所有数据将被截断为1个字符.

这只是一个黑客,建议使用预处理输入文件,但有时候只需要一个Hack就可以了.

总结

以上是内存溢出为你收集整理的在redshift postgresql中我可以跳过具有复制功能的列全部内容,希望文章能够帮你解决在redshift postgresql中我可以跳过具有复制功能的列所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存