К сожалению, нет способа указать ни имя файла, ни расширение для него только с помощью Athena. Более того, файлы, созданные с помощью запроса CTAS, вообще не будут иметь никакого расширения. Тем не менее, вы можете переименовать файлы напрямую с помощью CLI для 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
. Примечание Я не включил опцию --recursive
для aws s3 mv
, поскольку это также привело бы к странным результатам.
Что касается поля format
, то вам просто нужно добавить field_delimiter=','
в предложение WITH
.
CREATE TABLE ctas_csv_partitioned
WITH (
format = 'TEXTFILE',
field_delimiter=','
external_location = 's3://my_athena_results/ctas_csv_partitioned/',
partitioned_by = ARRAY['key1']
)
AS SELECT name1, address1, comment1, key1
FROM tables1