【问题标题】:Unable to export AWS RDS Postgres table to CSV in S3, using aws_s3.query_export_to_s3 function无法使用 aws_s3.query_export_to_s3 函数在 S3 中将 AWS RDS Postgres 表导出为 CSV
【发布时间】:2021-02-06 14:33:27
【问题描述】:

我密切关注有关将 AWS RDS Postgres 表作为 CSV 导出到 S3 的文档,但仍然无法使其正常工作。 Documentation URL

更具体地说,在创建 aws_s3 扩展之后

CREATE EXTENSION IF NOT EXISTS aws_s3 CASCADE;

我试图执行这个函数:

SELECT * from aws_s3.query_export_to_s3('select * from users limit 10', 'sample-s3-bucket', '/users_demo.csv');

失败并出现以下错误:

[42883] 错误:函数 aws_s3.query_export_to_s3(未知,未知, 未知)不存在 提示:没有函数匹配给定的名称和 参数类型。您可能需要添加显式类型转换。

没有记录此错误(或者我找不到相关文档)。似乎扩展中实际上缺少 aws_s3.query_export_to_s3 函数!

我试图查看这个函数aws_s3.query_export_to_s3 是否真的丢失了。我已经试过了:

  1. 列出可用的扩展程序会显示 aws_s3 esxtension 已安装:
SELECT * FROM pg_available_extensions where name like '%aw%';

结果:

    name     | default_version | installed_version |                   comment                   
-------------+-----------------+-------------------+---------------------------------------------
 aws_s3      | 1.0             | 1.0               | AWS S3 extension for importing data from S3
 aws_commons | 1.0             | 1.0               | Common data types across AWS services
(2 rows)
  1. 列出扩展函数不显示query_export_to_s3函数:
SELECT e.extname, ne.nspname AS extschema, p.proname, np.nspname AS proschema
FROM pg_catalog.pg_extension AS e
         INNER JOIN pg_catalog.pg_depend AS d ON (d.refobjid = e.oid)
         INNER JOIN pg_catalog.pg_proc AS p ON (p.oid = d.objid)
         INNER JOIN pg_catalog.pg_namespace AS ne ON (ne.oid = e.extnamespace)
         INNER JOIN pg_catalog.pg_namespace AS np ON (np.oid = p.pronamespace)
WHERE d.deptype = 'e' AND e.extname like '%aws%'
ORDER BY 1, 3;

结果:

   extname   | extschema |        proname         |  proschema  
-------------+-----------+------------------------+-------------
 aws_commons | public    | create_aws_credentials | aws_commons
 aws_commons | public    | create_s3_uri          | aws_commons
 aws_s3      | public    | table_import_from_s3   | aws_s3
 aws_s3      | public    | table_import_from_s3   | aws_s3
(4 rows)

  1. 最后,删除并重新创建扩展 aws_s3 不起作用。

更多信息:PostgreSQL 12.3 on x86_64-pc-linux-gnu

任何人都可以确认这个功能实际上是缺失的吗?换句话说,任何人都可以使用这个功能吗?

【问题讨论】:

    标签: postgresql amazon-web-services amazon-s3 export-to-csv


    【解决方案1】:

    尝试升级到 Postgres 12.4。我遇到了类似的问题,这就是 AWS 支持告诉我的(回复粘贴在下面)。 [编辑]

    更新

    最初我并没有完全完成这项工作,但可以确认升级到 Postgres 12.4,并且删除并重新创建扩展是有效的。

    DROP EXTENSION aws_s3 CASCADE;
    DROP EXTENSION aws_commons CASCADE;
    CREATE EXTENSION aws_s3 CASCADE;
    

    AWS Support 的原始回复:

    根据 describe-db-engine-versions[1] 的输出,我只能看到 以下特定引擎版本支持 s3Export 功能。因此 12.2 版不支持导出到 S3 功能。

    [
        {
            "Engine": "postgres",
            "EngineVersion": "10.14",
            "SupportedFeatureNames": [
                "s3Import",
                "s3Export"
            ]
        },
        {
            "Engine": "postgres",
            "EngineVersion": "11.9",
            "SupportedFeatureNames": [
                "s3Import",
                "s3Export"
            ]
        },
        {
            "Engine": "postgres",
            "EngineVersion": "12.4",
            "SupportedFeatureNames": [
                "s3Import",
                "s3Export"
            ]
        } ]
    

    【讨论】:

    【解决方案2】:

    将 RDS 实例升级到 12.4 并执行以下操作对我有用。

    DROP EXTENSION aws_s3;
    DROP EXTENSION aws_commons;
    CREATE EXTENSION aws_s3 CASCADE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2022-10-14
      • 2021-01-11
      • 2019-12-12
      • 2020-06-21
      • 1970-01-01
      • 2021-12-27
      相关资源
      最近更新 更多