S3 选择 CSV 标头

tho*_*tam 5 amazon-s3 amazon-web-services amazon-s3-select

我正在使用 S3 Select 从 S3 Bucket 读取 csv 文件并输出为 CSV。在输出中,我只看到行,但看不到标题。如何获得包含标题的输出。

import boto3

s3 = boto3.client('s3')

r = s3.select_object_content(
        Bucket='demo_bucket',
        Key='demo.csv',
        ExpressionType='SQL',
        Expression="select * from s3object s",
        InputSerialization={'CSV': {"FileHeaderInfo": "Use"}},
        OutputSerialization={'CSV': {}},
)

for event in r['Payload']:
    if 'Records' in event:
        records = event['Records']['Payload'].decode('utf-8')
        print(records)
Run Code Online (Sandbox Code Playgroud)

CSV

Name, Age, Status
Rob, 25, Single
Sam, 26, Married
Run Code Online (Sandbox Code Playgroud)

s3select 的输出

Rob, 25, Single
Sam, 26, Married
Run Code Online (Sandbox Code Playgroud)

Red*_*Boy 8

改变InputSerialization={'CSV': {"FileHeaderInfo": "Use"}},

InputSerialization={'CSV': {"FileHeaderInfo": "NONE"}},

然后,它将打印完整的内容,包括标题。

解释

FileHeaderInfo接受“无|使用|忽略”之一。

使用NONEoption 而不是USE,它也会打印标题,告诉NONE您还需要标题进行处理。

这里是参考。 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.select_object_content

我希望它有帮助。