web-dev-qa-db-ja.com

s3からpostgresql rdsにデータファイルをインポートする方法

私はAWSとPostgresqlが初めてです。

  1. Postgresqlデータベースを作成しました(上のrdsを使用)
  2. 複数のs3バケットに複数のドキュメントをアップロードしました
  3. EC2(Amazon Linux 64ビット)を実行しています

データパイプラインを使用しようとしましたが、Postgresで使用できる(テンプレート)ものが何もないようです。 RDSインスタンスに接続し、postgresからデータをインポート/エクスポートする方法がわかりません。

データパイプラインテンプレートが利用できない代わりに、EC2を使用してS3バケットからグラブし、Postgresにインポートできると想定しました。可能であれば、どうすればいいかわからない..可能であればアドバイスしてください..

24
user3044239

Redshiftで行ったように、AWSがRDS PostgresqlでCOPYコマンドを拡張することを望みます。しかし、今のところはそうではなく、自分でやらなければなりません。

  1. EC2ボックスにawscliをインストールします(デフォルトでインストールされている可能性があります)
  2. awscliを資格情報で構成します
  3. aws s3 syncまたはaws s3 cpコマンドを使用して、s3からローカルディレクトリにダウンロードします。
  4. Psqlコマンドを使用して、ファイルをRDSに\COPYします(クライアントディレクトリからコピーするには\が必要です)

例:

aws s3 cp s3://bucket/file.csv /mydirectory/file.csv
psql -h your_rds.amazonaws.com -U username -d dbname -c '\COPY table FROM ''file.csv'' CSV HEADER'
19
jcz

以前の回答は、AWSでの最近のイベントに取って代わりました。

現在、Data Pipelineサービスを介したS3からRDSデータベースへの読み込みの優れたサポートがあります(他の多くのデータ変換タスクにも使用できますが、これは一例です)。

このAWSの記事は、S3-to-RDS-MySQLを対象としています。 RDS-Postgresでも非常によく似ているはずです。

http://docs.aws.Amazon.com/datapipeline/latest/DeveloperGuide/dp-template-copys3tords.html

11
Chris Johnson

S3-> RDS直接ロードは、PostgreSQL AuroraおよびRDS PostgreSQL> = 11.1のaws_s3拡張として可能になりました。

パラメーターは PostgreSQL COPY コマンドのパラメーターに似ています

psql=> SELECT aws_s3.table_import_from_s3(
 'table_name', '', '(format csv)',
 'BUCKET_NAME', 'path/to/object', 'us-east-2'
);

この機能は古いバージョンでは機能しないことに注意してください。

7
quiver

psqlクライアントを起動してEC2インスタンスのRDSに接続できる場合、次のコマンドを使用できます。

\ myfile.csvからDELIMITER '、'でcustomer_ordersをコピーします

1
donnoyet