我正在使用 s3 select 查询和 where 子句从 s3 检索数据。当没有 where 子句时,查询工作正常并返回预期结果。虽然我在使用where子句时,过滤后的数据是正确的,但是对象中的key是表头之后的第一行,而不是表头。
示例:csv 文件
美国广播公司
1 2 3
1 5 6
询问 :select * from s3object s where s._1 = '1' limit 100
预期输出:[{A : 1, B:2, C:3}, {A:1, B:5, C:6}]
实际输出:[{1:1, 2:5, 3:6}]
这是我用来查询的 params 对象:
let params = {
Bucket: S3_BUCKET,
Key: S3_PATH,
Expression: "select * from s3object s where s._1 = '1' limit 100"
ExpressionType: "SQL",
InputSerialization: {
CSV: {
FileHeaderInfo: "NONE",
RecordDelimiter: "\n",
FieldDelimiter: ","
}
},
OutputSerialization: {
CSV: {}
}
};
即使我使用FileHeaderInfo : "USE"
,我也会得到相同的输出,并将查询更改为select * from s3object s where id = '22' and s.date > '2020-05-01' limit 100
AWS 文档:https ://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html