Amazon s3 是否可以更改AWS athena输出文件的分隔符
下面是我的示例代码,我使用AWS Athena在S3 bucket中创建了一个文件。默认情况下,该文件为csv格式。有没有办法将其更改为管道分隔符 导入json 进口boto3 def lambda_handlerevent,上下文: s3=bot3.客户端's3' 客户=boto3.客户“雅典娜” 启动查询执行 响应=client.start\u query\u执行 质询= 从srvgrp中选择* 其中类别\ U代码='ACOMNCDU' , QueryExecutionContext={ “数据库”:“tmp_db” }, 结果配置={ “OutputLocation”:“s3://tmp results/athena/” } queryId=响应['QueryExecutionId'] 打印“查询id为:”+strqueryIdAmazon s3 是否可以更改AWS athena输出文件的分隔符,amazon-s3,amazon-athena,Amazon S3,Amazon Athena,下面是我的示例代码,我使用AWS Athena在S3 bucket中创建了一个文件。默认情况下,该文件为csv格式。有没有办法将其更改为管道分隔符 导入json 进口boto3 def lambda_handlerevent,上下文: s3=bot3.客户端's3' 客户=boto3.客户“雅典娜” 启动查询执行 响应=client.start\u query\u执行 质询= 从srvgrp中选择* 其中类别\ U代码='ACOMNCDU' , QueryExecutionContext={ “
有一种方法可以做到这一点 但是: 这是一种黑客方式,而不是CTAS查询应该用于的,因为它还将在AWS Glue数据目录中创建一个新的表定义。 我对性能没有把握 创建表UNIQU_前缀_uu_u新建_u表 具有 格式='TEXTFILE', 外部位置='s3://tmp results/athena/\uuuuuu SOMETHING\u UNIQUE\uuuuuuuuuu', 字段_分隔符='|', bucketed_by=数组[''''u某些列''u'], 桶计数=1 像 挑选* 来自srvgrp 其中类别\ U代码='ACOMNCDU' 注: 设置bucket_count=1很重要,否则Athena将创建多个文件 创建_表中的表的名称。。。也应该是唯一的,例如使用时间戳前缀/后缀,您可以在python运行时注入该前缀/后缀 外部位置应该是唯一的,例如,使用可以在python运行时注入的时间戳前缀/后缀。我建议将表名嵌入到S3路径中 您只需要在SELECT中的一列中包含Buckted\u 在某些时候,您需要从以这种方式创建的所有表定义中清除AWS Glue数据目录
似乎没有用于更改保存在OutputLocation中的文件格式的选项。