S3 Select查询遇MaxRecordSize错误,如何定位超1MB记录?
找出ldjson.gz中超过1MB的记录
要从properties.ldjson.gz里筛选出字符数超过1,048,576(1MB)的记录,直接用命令行工具就能搞定,以下是两种实用方法:
方法一:直接提取超大记录并保存
用zcat解压压缩文件,配合awk统计每行字符数,同时输出行号、字符数和完整记录到文件:
zcat properties.ldjson.gz | awk '{ if (length($0) > 1048576) print NR ": " length($0) " 字符\n" $0 }' > oversized_records.txt
执行后,超大记录会被保存到oversized_records.txt里,方便后续查看和处理。
方法二:先定位行号再提取
如果只想先快速找到哪些行是超大记录,可先用下面的命令输出行号和对应字符数:
zcat properties.ldjson.gz | awk '{ print NR, length($0) }' | awk '$2 > 1048576'
得到行号后,再用sed单独提取指定行的记录:
zcat properties.ldjson.gz | sed -n '替换成实际行号p'
注:你之前切换CSV格式没用,是因为那条超大记录本身的字符数已经超过AWS的阈值,必须先定位并处理这条记录才能解决查询报错问题。
内容的提问来源于stack exchange,提问作者fvnbab
相关产品推荐
相关产品推荐

