私はAWSとPostgresqlが初めてです。
データパイプラインを使用しようとしましたが、Postgresで使用できる(テンプレート)ものが何もないようです。 RDSインスタンスに接続し、postgresからデータをインポート/エクスポートする方法がわかりません。
データパイプラインテンプレートが利用できない代わりに、EC2を使用してS3バケットからグラブし、Postgresにインポートできると想定しました。可能であれば、どうすればいいかわからない..可能であればアドバイスしてください..
Redshiftで行ったように、AWSがRDS PostgresqlでCOPYコマンドを拡張することを望みます。しかし、今のところはそうではなく、自分でやらなければなりません。
awscli
をインストールします(デフォルトでインストールされている可能性があります)awscli
を資格情報で構成しますaws s3 sync
またはaws s3 cp
コマンドを使用して、s3からローカルディレクトリにダウンロードします。\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'
以前の回答は、AWSでの最近のイベントに取って代わりました。
現在、Data Pipelineサービスを介したS3からRDSデータベースへの読み込みの優れたサポートがあります(他の多くのデータ変換タスクにも使用できますが、これは一例です)。
このAWSの記事は、S3-to-RDS-MySQLを対象としています。 RDS-Postgresでも非常によく似ているはずです。
http://docs.aws.Amazon.com/datapipeline/latest/DeveloperGuide/dp-template-copys3tords.html
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'
);
この機能は古いバージョンでは機能しないことに注意してください。
psqlクライアントを起動してEC2インスタンスのRDSに接続できる場合、次のコマンドを使用できます。
\ myfile.csvからDELIMITER '、'でcustomer_ordersをコピーします