我想知道是否有人想出如何在S3 Select中跳过行?
SELECT S.* FROM s3object S SKIP 100 LIMIT 200
--or
SELECT * from s3object s LIMIT 5, 10
--or
SELECT * from s3object s limit 5 OFFSET 10
看起来您可以限制返回的记录数
s3 = boto3.client('s3')
bucket = bucket
file_name = file
sql_stmt = """SELECT S.* FROM s3object S LIMIT 10"""
req = s3.select_object_content(
Bucket=bucket,
Key=file,
ExpressionType='SQL',
Expression=sql_stmt,
InputSerialization = {'CSV': {'FileHeaderInfo': 'USE'}},
OutputSerialization = {'CSV': {}},
)
还有一个请求将 OFFSET/SKIP 添加到 s3api,但它已关闭。
您也可以以字节为单位指定ScanRange,但如果对象被压缩会发生什么?
它是以字节为单位的压缩对象还是未压缩对象?
如果未压缩,S3 Select 如何处理部分记录?
更新:您不能在gzip
文件中使用 ScanRange:
botocore.exceptions.ClientError:调用 SelectObjectContent 操作时发生错误 (UnsupportedScanRangeInput):GZIP 类型的对象不支持扫描范围查询。