aws_s3.query_export_to_s3 PostgreSQL RDS扩展将所有多部分CSV文件导出到S3(带有头)

uttx8gqw  于 2023-05-11  发布在  PostgreSQL
关注(0)|答案(2)|浏览(143)

我使用aws_s3.query_export_to_s3函数将数据从Amazon Aurora Postgresql数据库以CSV格式导出到S3,并带有标题行。
这个管用
但是,当导出很大并且输出到多个零件文件时,第一个零件文件具有CSV标题行,而后续零件文件则没有。

SELECT * FROM aws_s3.query_export_to_s3(
  'SELECT ...',
  aws_commons.create_s3_uri(...),
  options:='format csv, HEADER true'
);

如何使此导出将标题行添加到所有CSV文件部分?
我使用ApacheSpark来加载这个CSV数据,它期望在每个单独的部件文件中有一个标题行。

q3qa4bjr

q3qa4bjr1#

我怎样才能使这个导出添加标题行到所有部分文件?
很不幸,这是不可能的。
aws_s3.query_export_to_s3函数在后台使用PostgreSQL COPY命令&然后根据大小适当地分块文件。
除非扩展选择HEADER true选项,缓存头文件,然后提供一个选项将其应用于生成的每个CSV文件,否则您就不走运了。
期望文件在下载时在目的地合并 * 或 * 文件处理器有某种分部分阅读文件的机制 * 或 * 文件处理器只需要头一次。

kokeuurv

kokeuurv2#

我想你可以做到这一点,它只是一个不同的查询与选项格式字段

SELECT aws_s3.query_export_to_s3(
    'SELECT * from users’,
    '(my_bucket,some_path/file_name,us-west-2)'
    '(format csv)',
);

注意'(my_bucket,some_path/file_name,us-west-2)'只是aws_commons.create_s3_uri这样的方法的字符串输出

相关问题