将数据从 AWS S3 加载到 Aurora Postgres

dev*_*evd 4 postgresql amazon-s3 amazon-web-services amazon-aurora

我正在尝试从AWS S3to加载数据Aurora Postgres。我已经点击了这个链接https://aws.amazon.com/blogs/database/stream-data-into-an-aurora-postgresql-database-using-aws-dms-and-amazon-kinesis-data-firehose/但是没有任何成功。有没有人加载它或知道一些链接,我可以在其中找到实现它的步骤。

小智 7

虽然这是一个旧帖子,但我希望它会帮助那些正在寻找的人。其中大部分来自AWS 官方文档。我正在添加一些注释以帮助完成。

这是演习:

连接到 RDS Postgres 实例。

在 psql 提示符下运行此命令以创建从 s3 导入数据所需的扩展:

CREATE EXTENSION aws_s3 CASCADE;
Run Code Online (Sandbox Code Playgroud)

创建数据库:

CREATE DATABASE students;
Run Code Online (Sandbox Code Playgroud)

创建表(假设如下三列):

CREATE TABLE t1 (col1 varchar(80), col2 varchar(80), col3 varchar(80));
Run Code Online (Sandbox Code Playgroud)

请注意,您在 S3 存储桶中的 csv 文件应该具有相同数量的列,除非您想跳过一些(这超出了本文的范围)。

要使用控制台为 PostgreSQL 数据库集群添加 IAM 角色:

  1. 登录 AWS 管理控制台并通过https://console.aws.amazon.com/rds/打开 Amazon RDS 控制台。
  2. 选择 PostgreSQL 数据库集群名称以显示其详细信息。
  3. 在连接和安全选项卡上的管理 IAM 角色部分,在将 IAM 角色添加到此实例下选择要添加的角色。
  4. 在功能下,选择 s3Import。
  5. 选择添加角色。

    SELECT aws_commons.create_s3_uri('your_bucket_name', 'full/path/to/file.csv','aws_region') AS s3_uri \gset
    SELECT aws_s3.table_import_from_s3('t1', '', '(format csv)', :' s3_uri');

不要在 full/path/to/file.csv 前面添加存储桶名称。使用正确的 aws_region(如 us-east-1)并且不要在此处添加任何可用区。

你应该得到类似的东西:

1000 rows imported into relation "t1" from file ...
Run Code Online (Sandbox Code Playgroud)

使用示例查询进行测试:

SELECT * FROM t1 LIMIT 5;
Run Code Online (Sandbox Code Playgroud)

哈。

  • 对于我的情况,我有一个带有标题行的制表符分隔值 (TSV) 文件,这意味着我必须将分隔符值更改为制表符。该选项卡由 `\t` 分隔,但为了转义它,我必须使用 `E'\t'` (参见 https://www.postgresql.org/docs/ 中的“具有 C 风格转义的字符串常量”) 12/sql-syntax-lexical.html)。但是,由于该命令已经是字符串的一部分并且具有嵌套引号,因此我必须将引号加倍,因此该命令总共为“(FORMAT csv, DELIMITER E''\t'', HEADER)'” (请注意,这些是连续的单引号,而不是双引号)。 (2认同)