程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果未提供列列表,Redshift COPY 命令将忽略表默认值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如果未提供列列表,Redshift COPY 命令将忽略表默认值?

开发过程中遇到如果未提供列列表,Redshift COPY 命令将忽略表默认值的问题如何解决?下面主要结合日常开发的经验,给出你关于如果未提供列列表,Redshift COPY 命令将忽略表默认值的解决方法建议,希望对你解决如果未提供列列表,Redshift COPY 命令将忽略表默认值有所启发或帮助;

我有一个表 myTable,其中有一些带有默认值的列。

我有一个 Json 文件,Jsonfile.Json 包含该表的数据,但表中的每个字段都没有值。

当我尝试执行这样的复制时:

copY myTable
from 's3://bucket/Jsonfile.Json' 
IAM_RolE 'arn:aws:iam::111111111111:role/redshift-role'
FORMAT AS JsON 'auto'
GZIP

文件中缺失的字段应该让表在复制时设置其默认值,但这些值被设置为 null 或空。

如果我执行这样的复制:

copY myTable(a,b,C)  --doesn't even have to have the full column List
from 's3://bucket/Jsonfile.Json' 
IAM_RolE 'arn:aws:iam::111111111111:role/redshift-role'
FORMAT AS JsON 'auto'
GZIP

然后表中具有默认值的列将设置为其默认值。

我四处搜索,但没有发现任何描述此情况的内容,或者至少我认为这是这种情况。

有人见过这个吗?

解决方法

您应该发布一些示例数据以使事情更清楚。重要的是要记住,对于文本,空字符串和 NULL 是不同的。空字符串是一个值,其中 NULL 不是,并且只有在没有为列指定值时才分配默认值。那么在您的数据中,源文件中没有数据的字段是空字符串吗?我希望如此,但显示示例数据会澄清。有一个 JSON 文件的 COPY 选项,可以将空字符串映射到 NULL -“EMPTYASNULL”。如果我的假设是正确的,这可以解决您的问题。

,

您使用什么类型的默认值? DEFAULTIDENTITYGENERATED BY DEFAULT AS IDENTITY

我怀疑解释将取决于加载行时的预期行为,而这又取决于所使用的默认类型。

大佬总结

以上是大佬教程为你收集整理的如果未提供列列表,Redshift COPY 命令将忽略表默认值全部内容,希望文章能够帮你解决如果未提供列列表,Redshift COPY 命令将忽略表默认值所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。