Amazon web services 如何使用外部位置为csv.gz的CTA
我有近90 GB的数据需要上传到具有特定命名约定的S3存储桶 如果我将CTAS查询与Amazon web services 如何使用外部位置为csv.gz的CTA,amazon-web-services,amazon-s3,amazon-athena,Amazon Web Services,Amazon S3,Amazon Athena,我有近90 GB的数据需要上传到具有特定命名约定的S3存储桶 如果我将CTAS查询与external_location一起使用,它不会为我提供为文件指定特定名称的选项。此外,使用格式csv不是一个选项 创建表ctas\u csv\u分区 与( 格式='TEXTFILE', 外部位置='s3://my\u athena\u results/ctas\u csv\u partitioned/', 分区单位=数组['key1'] ) 选择名称1、地址1、注释1和键1 来自表1 我想上传输出文件,使
external_location
一起使用,它不会为我提供为文件指定特定名称的选项。此外,使用格式
csv不是一个选项
创建表ctas\u csv\u分区
与(
格式='TEXTFILE',
外部位置='s3://my\u athena\u results/ctas\u csv\u partitioned/',
分区单位=数组['key1']
)
选择名称1、地址1、注释1和键1
来自表1
我想上传输出文件,使其看起来像sample\u file.csv.gz
最简单的方法是什么?不幸的是,单凭Athena无法指定文件名或扩展名。此外,使用CTAS查询创建的文件根本没有任何文件扩展名。但是,您可以直接使用CLI for S3重命名文件 aws s3 ls s3://path/to/external/location/--recursive\ |awk'{cmd=“aws s3 mv s3://path/to/external/location/“$4”s3://path/to/external/location/“$4.csv.gz”;system(cmd)}” 只要试过这个片段,一切都很好。但是,有时也会创建一个空文件
s3://path/to/external/location/.csv.gz
注意我没有为aws s3 mv
包含--recursive
选项,因为它也会产生奇怪的结果
就格式
字段而言,只需将字段_delimiter=','
添加到WITH
子句中即可
创建表ctas\u csv\u分区
与(
格式='TEXTFILE',
字段_分隔符=','
外部位置='s3://my\u athena\u results/ctas\u csv\u partitioned/',
分区单位=数组['key1']
)
选择名称1、地址1、注释1和键1
来自表1
CSV不仅仅有一个字段分隔符。有没有办法指定引用字符或换行符?