sha*_*ane 11 amazon-web-services amazon-redshift
我正在尝试执行加载/复制操作,以将数据从S3存储桶中的JSON文件直接导入Redshift.COPY操作成功,在COPY之后,表具有正确的行/记录数,但每个记录都为NULL!
它需要加载的预期时间,COPY命令返回OK,Redshift控制台报告成功且没有错误......但是如果我从表中执行简单查询,它只返回NULL值.
JSON非常简单+平面,并且格式正确(根据我在这里找到的示例:http://docs.aws.amazon.com/redshift/latest/dg/r_COPY_command_examples.html)
基本上,它是每行一行,格式如下:
{ "col1": "val1", "col2": "val2", ... }
{ "col1": "val1", "col2": "val2", ... }
{ "col1": "val1", "col2": "val2", ... }
我尝试过根据JSON对象中的值和数据类型重写模式,以及从未压缩文件复制.我想也许JSON在加载时没有被正确解析,但如果无法解析对象,它可能会引发错误.
我的COPY命令如下所示:
copy events from 's3://mybucket/json/prefix' 
with credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxx'
json 'auto' gzip;
任何指导将不胜感激!谢谢.
sha*_*ane 24
所以我发现了原因 - 这在我原来的帖子中提供的描述中并不明显.
在Redshift中创建表时,列名称将转换为小写.执行COPY操作时,列名称区分大小写.
我一直在尝试加载的输入数据是使用camelCase作为列名,因此当我执行COPY时,列与定义的模式(现在使用所有小写列名称)不匹配
但是,该操作不会引发错误.它只是在所有不匹配的列中留下NULL(在这种情况下,所有列都是)
希望这有助于某人避免同样的困惑!
| 归档时间: | 
 | 
| 查看次数: | 3372 次 | 
| 最近记录: |