Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如果未提供列列表,则Redshift COPY命令将忽略表的默认值_Json_Amazon Web Services_Copy_Amazon Redshift - Fatal编程技术网

Json 如果未提供列列表,则Redshift COPY命令将忽略表的默认值

Json 如果未提供列列表,则Redshift COPY命令将忽略表的默认值,json,amazon-web-services,copy,amazon-redshift,Json,Amazon Web Services,Copy,Amazon Redshift,我有一个表,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 COPY myTable(a, b, c) --doesn'

我有一个表,
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
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或空

如果我改为执行如下复制:

COPY myTable
from 's3://bucket/jsonfile.json' 
IAM_ROLE 'arn:aws:iam::111111111111:role/redshift-role'
FORMAT AS JSON 'auto'
GZIP
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文件的选项,该选项将空字符串映射为NULL——“EMPTYASNULL”。如果我的假设是正确的,这可以解决您的问题。

您使用的默认值类型是什么<代码>默认值,
标识
,或默认生成为标识的

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