无效操作:json对象的总大小超过最大限制4194304字节详细信息

asc*_*ker 5 data-migration amazon-s3 google-bigquery amazon-redshift

我正在尝试迁移 redshift 数据库中的大查询事件数据。我正在使用以下命令。

COPY events_20180627 from 's3://big-query-to-rs/big-query-data/events_20180627' CREDENTIALS 'aws_access_key_id=XXXXXXXXX;aws_secret_access_key=XXXXXXXXXXX' format as json 'auto' ;
Run Code Online (Sandbox Code Playgroud)

对于大小超过 4 MB 的行,它给出以下错误。

Amazon 无效操作:json 对象的总大小超过 4194304 字节的最大限制详细信息: ------------------------------ ----------------- 错误:json 对象的总大小超出了 4194304 字节的最大限制 代码:8001 上下文:

我浏览了各种博客并回答但没有运气。

有人能告诉我解决方法吗?谢谢!

小智 4

也许你们已经知道这一点,但一开始我并不清楚。

4MB 限制是针对表插入的单行,而不是针对所有行的总和。我有一个错误,因为我的 JSON 格式是:

[
  {"field1": "a", "field2": "b"},
  {"field1": "c", "field2": "d"},
  ...
]
Run Code Online (Sandbox Code Playgroud)

我认为 redshift 认为它是单行,这就是它给出 4MB 错误的原因。

Redshift 需要这种格式:

{"field1": "a", "field2": "b"}
{"field1": "c", "field2": "d"}
...
Run Code Online (Sandbox Code Playgroud)

也就是说,不是嵌套在数组内的对象,而是彼此相邻的普通对象,由可选的空格分隔(我只测试了用换行符分隔,但很确定这些是可选的)。

文件:

希望这有帮助!