Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

Amazon RDS 上の PostgreSQL にデータをインポートする

Amazon RDS に移動させる既存の PostgreSQL デプロイがあるとします。タスクの複雑さは、データベースのサイズと転送するデータベースオブジェクトの種類に依存しています。たとえば、データベースにギガバイトのオーダーのデータセット、さらにストアドプロシージャとトリガーが含まれているとします。このようなデータベースは、単純なデータベース (数メガバイトのテストデータを含むだけで、トリガーやストアドプロシージャを含まないもの) よりも複雑になります。

次の条件で、ネイティブ PostgreSQL データベース移行ツールを使用することをお勧めします。

  • ターゲットデータベースエンジンと同じデータベースエンジンを持つデータベースから移行する、同機種移行である。

  • データベース全体を移行する。

  • ネイティブツールでは、最小のダウンタイムでシステムを移行することができます。

他のほとんどの場合、AWS Database Migration Service (AWS DMS) を使用してデータベースを移行するのが最善の手法です。AWS DMS はダウンタイムなしでデータベースを移行でき、多くのデータベースエンジンに対して、ターゲットデータベースに切り替える準備ができるまで、進行中のレプリケーションを続行できます。AWS DMS を使用して、同じデータベースエンジンまたは異なるデータベースエンジンに移行できます。ソースデータベースとは別のデータベースエンジンへ移行する場合は、AWS Schema Conversion Tool (AWS SCT) を使用できます。AWS SCT を使用して、AWS DMS で移行されないスキーマオブジェクトを移行します。AWS DMS の詳細については、「AWS Database Migration Service とは」を参照してください。

DB パラメータグループを変更し、次のインポート専用の設定を含めます。DB インスタンスサイズの最も効率的な設定を見つけるために、パラメータ設定をテストする必要があります。さらに、インポートが完了したら、これらのパラメータを本番稼働用の値に戻す必要があります。

DB インスタンスの設定を次のように変更します。

  • DB インスタンスのバックアップを無効にします (backup_retention を 0 に設定します)。

  • マルチ AZ を無効にする.

次の設定を含むように DB パラメータグループを変更します。これらの設定は、データのインポート時にのみ使用してください。DB インスタンスサイズの最も効率的な設定を見つけるために、パラメータ設定をテストする必要があります。さらに、インポートが完了したら、これらのパラメータを本番稼働用の値に戻す必要があります。

パラメータ インポート時の推奨値 説明

maintenance_work_mem

524288、1048576、2097152、または 4194304 (KB 単位)。これらの設定は、512 MB、1 GB、2 GB、および 4 GB と同等です。

この設定の値は、ホストのサイズによって異なります。このパラメータは、CREATE INDEX ステートメントで使用され、各並列コマンドがこの量のメモリを使用できます。この設定値が大きすぎてメモリ不足が生じることのないように、最適な値を計算します。

checkpoint_segments

256

この設定値では、ディスク容量の消費が増えますが、WAL ログの競合が少なくなります。PostgreSQL バージョン 9.5.x および 9.6.x の場合、この値は max_wal_size になります。

checkpoint_timeout

1800

この値に設定すると、WAL ローテーションの頻度を低くすることができます。

synchronous_commit

オフ

この設定を無効にすると、書き込みが速くなります。このパラメータをオフにすると、サーバークラッシュ時にデータが損失するリスクを下げることができます (FSYNC はオフにしないでください)。

wal_buffers

8192

この値は、8 KB 単位です。これも WAL の生成速度に貢献します。

autovacuum

オフ

リソースが使用されないように、データのロード時に PostgreSQL の自動バキュームパラメータを無効にします。

これらの設定で、pg_dump -Fc (圧縮) または pg_restore -j (並列) コマンドを使用します。

注記

PostgreSQL コマンド pg_dumpall の実行には SUPER_USER 権限が必要ですが、この権限は DB インスタンスの作成時に付与されません。そのため、このコマンドをデータのインポートに使用することはできません。

Amazon EC2 インスタンスから PostgreSQL データベースをインポートする

Amazon EC2 インスタンス上の PostgreSQL サーバーにデータがあり、そのデータを PostgreSQL DB インスタンスに移動する場合は、以下のプロセスを使用できます。このプロセスは以下のステップで構成されます。この後のセクションで、各ステップについて詳しく説明します。

  1. pg_dump を使用して、ロードするデータを格納したファイルを作成する

  2. ターゲット DB インスタンスを作成する

  3. psql を使用して、DB インスタンスにデータベースを作成し、データをロードする

  4. DB インスタンスの DB スナップショットを作成する

ステップ 1: ロードするデータが含まれている pg_dump を使用してファイルを作成する

pg_dump ユーティリティでは、COPY コマンドを使用して、PostgreSQL データベースのスキーマとデータダンプを作成します。pg_dump によって生成されるダンプスクリプトは、同じ名前のデータベースにデータをロードし、テーブル、インデックス、外部キーを再作成します。pg_restore コマンドと -d パラメータを使用して、データを別の名前でデータベースに復元できます。

データダンプの作成前に、ダンプするテーブルに対してクエリを実行して行数を取得し、ターゲット DB インスタンスでその行数を確認できるようにする必要があります。

以下のコマンドでは、mydb2 というデータベース用に mydb2dump.sql というダンプファイルを作成しています。

prompt>pg_dump dbname=mydb2 -f mydb2dump.sql

ステップ 2: ターゲット DB インスタンスを作成する

Amazon RDS コンソール、AWS CLI、または API のいずれかを使用して、ターゲット PostgreSQL DB インスタンスを作成します。バックアップの保持設定を 0 にし、マルチ AZ を無効にして、インスタンスを作成します。これにより、データのインポートが高速化されます。データをダンプする前に、インスタンスにデータベースを作成する必要があります。データベースは、ダンプしたデータが含まれていたデータベースと同じ名前で作成できます。または、別の名前でデータベースを作成できます。この場合は、pg_restore コマンドと -d パラメータを使用して、新しい名前のデータベース内にデータを復元します。

たとえば、データベースのダンプ、復元、名前変更に以下のコマンドを使用できます。

pg_dump -Fc -v -h [endpoint of instance] -U [master username] [database] > [database].dump createdb [new database name] pg_restore -v -h [endpoint of instance] -U [master username] -d [new database name] [database].dump

ステップ 3: psql を使用して DB インスタンスにデータベースを作成し、データをロードする

pg_dump コマンドの実行に使用した同じ接続を使用して、ターゲット DB インスタンスに接続し、データベースを再作成できます。psql により、マスターユーザー名とマスターパスワードを使用して DB インスタンスにデータベースを作成できます。

以下の例では、psql と、mydb2dump.sql という名前のダンプファイルを使用して、mypginstance という PostgreSQL DB インスタンスに mydb2 というデータベースを作成しています。

Linux、OS X、Unix の場合:

psql \ -f mydb2dump.sql \ --host mypginstance.c6c8mntzhgv0.us-west-2.rds.amazonaws.com \ --port 8199 \ --username myawsuser \ --password password \ --dbname mydb2

Windows の場合:

psql ^ -f mydb2dump.sql ^ --host mypginstance.c6c8mntzhgv0.us-west-2.rds.amazonaws.com ^ --port 8199 ^ --username myawsuser ^ --password password ^ --dbname mydb2

ステップ 4: DB インスタンスの DB スナップショットを作成する

データが DB インスタンスにロードされたことを確認したら、ターゲット PostgreSQL DB インスタンスの DB スナップショットを作成することをお勧めします。DB スナップショットは DB インスタンスの完全なバックアップであり、DB インスタンスを既知の状態に復元するために使用できます。ロード直後に DB スナップショットを作成しておくと、何らかの事故のときにそのスナップショットを使用すれば、データを再ロードせずに済みます。また、そのスナップショットを使用して、新しい DB インスタンスをシードすることもできます。DB スナップショットの作成については、「DB スナップショットの作成」を参照してください。

\copy コマンドを使用して PostgreSQL DB インスタンスのテーブルにデータをインポートする

psql プロンプトから \copy コマンドを実行して、PostgreSQL DB インスタンス上のテーブルにデータをインポートできます。DB インスタンスには、テーブルがあらかじめ存在している必要があります。\copy コマンドの詳細については、PostgreSQL ドキュメントを参照してください。

注記

\copy コマンドでは、挿入された行の数の確認など、アクションの確認は行えません。コピーコマンドがエラーのため失敗した場合、PostgreSQL によってエラーメッセージは返されません。

ソーステーブルのデータから .csv ファイルを作成したら、psql を使用して PostgreSQL インスタンス上のターゲットデータベースにログオンし、以下のコマンドを実行します。この例では、ソーステーブル名として source-table、.csv ファイルとして source-table.csv、ターゲットデータベースとして target-db を使用しています。

target-db=> \copy source-table from 'source-table.csv' with DELIMITER ',';

また、クライアントコンピューターのコマンドプロンプトから、以下のコマンドを実行することもできます。この例では、ソーステーブル名として source-table、.csv ファイルとして source-table.csv、ターゲットデータベースとして target-db を使用しています。

Linux、OS X、Unix の場合:

$psql target-db \ -U <admin user> \ -p <port> \ -h <DB instance name> \ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

Windows の場合:

$psql target-db ^ -U <admin user> ^ -p <port> ^ -h <DB instance name> ^ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

Amazon S3 データを RDS for PostgreSQL DB インスタンスにインポートする

データは、Amazon S3 から、 RDS for PostgreSQL DB インスタンスに属するテーブルにインポートすることができます。そのためには、Amazon RDS によって提供される aws_s3 PostgreSQL 拡張機能を使用することができます。

Amazon S3 を使用したデータの保存の詳細については、『Amazon Simple Storage Service 入門ガイド』の「バケットの作成」を参照してください。Amazon S3 バケットにファイルをアップロードする方法の手順については、『Amazon Simple Storage Service 入門ガイド』の「バケットにオブジェクトを追加」を参照してください。

注記

Amazon S3 から RDS for PostgreSQL にインポートするには、データベースで PostgreSQL バージョン 11.1 以降が実行されている必要があります。

Amazon S3 データを収集およびインポートする

Amazon S3 バケットに保存されているデータを PostgreSQL データベーステーブルにインポートするには、以下に示されているように、次の情報を収集し、aws_s3.table_import_from_s3 関数を使用します。

S3 データを Amazon RDS にインポートするには

  1. psql を起動し、次のコマンドを使用して、必要な PostgreSQL 拡張機能をインストールします。たとえば、aws_s3 および aws_commons などがあります。

    psql=> CREATE EXTENSION aws_s3 CASCADE; NOTICE: installing required extension "aws_commons"

    aws_s3 拡張機能には、Amazon S3 データのインポートに使用する aws_s3.table_import_from_s3 関数が含まれます。

  2. インポートする Amazon S3 ファイルにアクセスするためのアクセス許可を付与します。そのためには、ファイルがある Amazon S3 バケットへのアクセス権を付与した AWS Identity and Access Management (IAM) ロールを作成します。次に、そのロールを RDS for PostgreSQL DB インスタンスに割り当てます。

    アクセス許可を付与するための IAM ロールの設定の詳細については、IAM ロールを使用した Amazon S3 ファイルへのアクセス を参照してください。

  3. table_import_from_s3 関数の必要な情報を収集するには、次のステップを行います。

    1. インポートする Amazon S3 ファイルに関する次の情報を取得します。

      • バケット名 – バケットは、Amazon S3 オブジェクトまたはファイルのコンテナです。

      • ファイルパス – ファイルパスは、Amazon S3 バケット内のファイルの場所を指します。

      • AWS リージョン – AWS リージョンは、Amazon S3 リージョンの場所を指します。

      この情報を取得する方法については、Amazon Simple Storage Service 入門ガイド の「オブジェクトの表示」を参照してください。

    2. このファイル情報を保持するための aws_commons._s3_uri_1 構造を作成するには、次の例のように aws_commons.create_s3_uri 関数を使用します。

      psql=> SELECT aws_commons.create_s3_uri( 'sample_s3_bucket', 'sample.csv', 'us-east-1' ) AS s3_uri \gset

      この aws_commons._s3_uri_1 構造は、aws_s3.table_import_from_s3 関数への呼び出しに使用するために s3_info パラメータで後に指定します。

    3. データを入力する PostgreSQL データベーステーブルを特定します。たとえば、以下はサンプルのデータベーステーブル t1 です。

      psql=> CREATE TABLE t1 (bid bigint PRIMARY KEY, name varchar(80));
  4. 準備タスクが完了したら、aws_s3.table_import_from_s3 関数を使用して、Amazon S3 データをインポートします。

psql を使用した従来の PostgreSQL の例を以下に示します。

psql=> SELECT aws_s3.table_import_from_s3( 't1', '', '(format csv)', :'s3_uri' );

パラメータは次のとおりです。

  • t1 – データのコピー先となる PostgreSQL DB インスタンス内のテーブルの名前。

  • '' – データベーステーブル内の列のオプションのリスト。S3 データをコピーする列とテーブル列を指定するには、このパラメータを使用します。列を指定しない場合は、すべての列がテーブルにコピーされます。列のリストの使用例については、カスタム区切り文字を使用する Amazon S3 ファイルをインポートする を参照してください。

  • (format csv) – PostgreSQL COPY 引数。このコピープロセスでは、PostgreSQL COPY コマンドの引数と形式を使用します。前述の例では、COPY コマンドは、カンマ区切り値 (CSV) ファイル形式を使用してデータをコピーします。その他の例については、「Amazon S3 ファイル形式への対応」を参照してください。

  • s3_uri – Amazon S3 ファイルを識別する情報を含む構造。

この関数の詳細については、aws_s3.table_import_from_s3 を参照してください。

IAM ロールを使用した Amazon S3 ファイルへのアクセス

Amazon S3 ファイルからデータをロードするには、Amazon S3 にアクセスするためのアクセス許可を RDS for PostgreSQL DB インスタンスに付与します。そのためには、Amazon S3 バケットへのアクセス権を持つ IAM ロールを作成し、そのロールを DB インスタンスに割り当てます。このように、追加の認証情報を付与または管理する必要はありません。

IAM ロールを使用して、Amazon S3 へのアクセス権を RDS for PostgreSQL DB インスタンスに付与するには

  1. RDS PostgreSQL DB インスタンスに Amazon S3 へのアクセスを許可するバケットとオブジェクトのアクセス許可を付与する IAM ポリシーを作成します。

    Amazon S3 バケットから Amazon RDS へのファイル転送を許可するには、次の必須アクションをポリシーに含めます。

    • GetObject

    • ListBucket

    Amazon RDS for PostgreSQL の IAM ポリシーの作成の詳細については、IAM データベースアクセス用の IAM ポリシーの作成と使用 を参照してください。

    以下の AWS CLI コマンドでは、これらのオプションを指定して、 rds-s3-integration-policy という名前の IAM ポリシーを作成します。このポリシーでは、your-s3-bucket-arn という名前のバケットへのアクセス権が付与されます。

    注記

    ポリシーを作成したら、そのポリシーの Amazon リソースネーム (ARN) を書き留めます。この ARN は、インポートプロセスの後のステップで必要になります。

    Linux、OS X、Unix の場合:

    aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'

    Windows の場合:

    aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3integration", "Action": [ "s3:GetObject", "s3:ListBucket", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::your-s3-bucket-arn", "arn:aws:s3:::your-s3-bucket-arn/*" ] } ] }'
  2. Amazon S3 バケットにアクセスするには、お客様に代わって Amazon RDS が引き受けることのできる IAM ロールを作成します。詳細については、IAM ユーザーガイド の「IAM ユーザーにアクセス権限を委任するロールの作成」を参照してください。

    以下の例は、 AWS CLI コマンドを使用して、rds-s3-integration-role という名前のロールを作成する例を示しています。

    Linux、OS X、Unix の場合:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Windows の場合:

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. 作成した IAM ポリシーを、作成した IAM ロールにアタッチします。

    以下の AWS CLI コマンドでは、先ほど作成したポリシーを rds-s3-integration-role という名前のロールにアタッチします。your-policy-arn を、以前のステップで書き留めたポリシー ARN に置き換えます。

    Linux、OS X、Unix の場合:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    Windows の場合:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role
  4. IAM ロールを RDS for PostgreSQL DB インスタンスに追加するには、次に示されているように、AWS マネジメントコンソール または AWS CLI を使用します。

コンソール

コンソールを使用して PostgreSQL DB インスタンスの IAM ロールを追加するには

  1. AWS マネジメントコンソール にサインインして、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. 詳細を表示するには、PostgreSQL DB インスタンスの名前を選択します。

  3. [接続とセキュリティ] タブの [IAM ロールの管理] セクションで、[このインスタンスに IAM ロールを追加] で追加するロールを選択します。

  4. [Feature] で、[s3Import] を選択します。

  5. [Add role] を選択します。

AWS CLI

CLI を使用して PostgreSQL DB インスタンスの IAM ロールを追加するには

  • 次のコマンドを使用して、mydbinstance という名前の PostgreSQL DB インスタンスにロールを追加します。your-role-arn を、以前のステップで書き留めたロール ARN に置き換えます。--feature-name オプションの値に s3Import を使用します。

    Linux、OS X、Unix の場合:

    aws rds add-role-to-db-instance \ --db-instance-identifier mydbinstance \ --feature-name s3Import \ --role-arn your-role-arn \ --region us-west-2

    Windows の場合:

    aws rds add-role-to-db-instance ^ --db-instance-identifier mydbinstance ^ --feature-name s3Import ^ --role-arn your-role-arn ^ --region us-west-2

セキュリティ認証情報を使用して Amazon S3 ファイルにアクセスする

Amazon S3 ファイルへのアクセスを許可するには、IAM ロールを付与するか、aws_s3.table_import_from_s3 関数の呼び出しで credentials パラメータを指定します。

credentials パラメータは、型の構造体 aws_commons._aws_credentials_1 で、AWS 認証情報を含みます。aws_commons.create_aws_credentials 関数を使用して、aws_commons._aws_credentials_1 構造でアクセスキーおよびシークレットキーを設定します。以下に例を示します。

psql=> SELECT aws_commons.create_aws_credentials( '<sample_access_key>', '<sample_secret_key>', '') AS creds \gset

aws_commons._aws_credentials_1 構造を作成したら、aws_s3.table_import_from_s3 関数を使用してデータをインポートします。以下に例を示します。

psql=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', :'creds' );

または、aws_commons.create_aws_credentials 関数の呼び出しのインラインを aws_s3.table_import_from_s3 関数の呼び出し内に含めることもできます。

psql=> SELECT aws_s3.table_import_from_s3( 't', '', '(format csv)', :'s3_uri', aws_commons.create_aws_credentials('<sample_access_key>', '<sample_secret_key>', '') );

Amazon S3 ファイル形式への対応

以下の例は、インポート時にさまざまな種類のファイルを指定する方法を示します。

注記

以下の例では、IAM ロールメソッドを使用して、Amazon S3 ファイルへのアクセス権を付与します。このように、aws_s3.table_import_from_s3 関数の呼び出しに認証情報パラメータはありません。

カスタム区切り文字を使用する Amazon S3 ファイルをインポートする

以下の例では、カスタム区切り文字を使用するファイルのインポート方法を示します。また、aws_s3.table_import_from_s3 関数の column_list パラメータを使用して、データベースのデータを置く場所を制御する方法を示します。

この例では、次の情報が Amazon S3 ファイル内のパイプ区切りの列に編成されているとします。

1|foo1|bar1|elephant1 2|foo2|bar2|elephant2 3|foo3|bar3|elephant3 4|foo4|bar4|elephant4 ...

カスタム区切り文字を使用するファイルをインポートするには

  1. インポートされたデータのテーブルをデータベースに作成します。

    psql=> CREATE TABLE test (a text, b text, c text, d text, e text); CREATE TABLE
  2. データを Amazon S3 からインポートするには、次の形式の aws_s3.table_import_from_s3 関数を使用します。

    または、aws_commons.create_s3_uri 関数の呼び出しのインラインを aws_s3.table_import_from_s3 関数の呼び出し内に含めて、ファイルを指定することもできます。

    psql=> SELECT aws_s3.table_import_from_s3( 'test', 'a,b,d,e', 'DELIMITER ''|''', aws_commons.create_s3_uri('sampleBucket', 'pipeDelimitedSampleFile', 'us-east-2') );

データが、次の列のテーブル内に入りました。

psql=> SELECT * FROM test; a | b | c | d | e ---+------+---+---+------+----------- 1 | foo1 | | bar1 | elephant1 2 | foo2 | | bar2 | elephant2 3 | foo3 | | bar3 | elephant3 4 | foo4 | | bar4 | elephant4

Amazon S3 圧縮 (gzip) ファイルをインポートする

以下の例では、gzip で圧縮されているファイルを Amazon S3 からインポートする方法を示します。

ファイルに次の Amazon S3 メタデータが含まれていることを確認します。

  • キー: Content-Encoding

  • 値: gzip

これらの値を Amazon S3 メタデータに追加する詳細については、Amazon Simple Storage Service コンソールユーザーガイド の「S3 オブジェクトにメタデータを追加する方法」を参照してください。

以下に示されているように、gzip ファイルを RDS for PostgreSQL DB インスタンスにインポートします。

psql=> CREATE TABLE test_gzip(id int, a text, b text, c text, d text); CREATE TABLE psql=> SELECT aws_s3.table_import_from_s3( 'test_gzip', '', '(format csv)', 'myS3Bucket', 'test-data.gz', 'us-east-2' );

エンコードされた Amazon S3 ファイルをインポートする

以下の例では、Windows-1252 でエンコードされているファイルを Amazon S3 からインポートする方法を示します。

psql=> SELECT aws_s3.table_import_from_s3( 'test_table', '', 'encoding ''WIN1252''', aws_commons.create_s3_uri('sampleBucket', 'SampleFile', 'us-east-2') );

関数リファレンス

aws_s3.table_import_from_s3

Amazon S3 データを Amazon RDS テーブルにインポートします。aws_s3 拡張機能には、aws_s3.table_import_from_s3 関数が含まれます。

3 つの必須のパラメータは、table_namecolumn_listoptions です。これらのパラメータを使用して、データベースを特定し、データをテーブルにコピーする方法を指定します。

また、以下のパラメータを使用することもできます。

  • s3_info パラメータは、インポートする Amazon S3 ファイルを指定します。このパラメータを使用する場合、PostgreSQL DB インスタンスの IAM ロールを使用して、Amazon S3 へのアクセス権を付与します。

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1 )
  • credentials パラメータは、Amazon S3 にアクセスするための認証情報を指定します。このパラメータを使用する場合、IAM ロールは使用しません。

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, s3_info aws_commons._s3_uri_1, credentials aws_commons._aws_credentials_1 )

aws_s3.table_import_from_s3 パラメータを次の表に示します。

パラメータ 説明
table_name データのインポート先となる PostgreSQL データベーステーブルの名前を含む必須のテキスト文字列。
column_list

データをコピーする PostgreSQL データベーステーブル列のオプションリストを含む必須のテキスト文字列。文字列が空の場合、テーブルの列がすべて使用されます。例については、「カスタム区切り文字を使用する Amazon S3 ファイルをインポートする」を参照してください。

options

PostgreSQL COPY コマンドの引数を含む必須のテキスト文字列。これらの引数は PostgreSQL のテーブルにデータをコピーする方法を指定します。詳細については、「PostgreSQL COPY ドキュメント」を参照してください。

s3_info

S3 オブジェクトに関する以下の情報を含む aws_commons._s3_uri_1 複合型。

  • bucket – ファイルを含む Amazon S3 バケット名。

  • file_path – ファイルの Amazon S3 パス。

  • region – ファイルがある AWS リージョン。

aws_commons._s3_uri_1 複合型構造を作成するには、aws_commons.create_s3_uri を参照してください。

credentials

インポートオペレーションに使用する次の認証情報を含む aws_commons._aws_credentials_1 複合型。

  • アクセスキー

  • シークレットキー

  • セッショントークン

aws_commons._aws_credentials_1 複合型構造を作成するには、aws_commons.create_aws_credentials を参照してください。

代替パラメータ

テストしやすいように、s3_info パラメータや credentials パラメータではなく、拡張されたパラメータセットを使用することができます。以下は、aws_s3.table_import_from_s3 関数の構文のバリエーションです。

  • Amazon S3 ファイルを識別するために s3_info パラメータを使用する代わりに、bucketfile_path、および region パラメータの組み合わせを使用します。この関数の形式を使用する場合は、PostgreSQL DB インスタンスの IAM ロールを使用して、Amazon S3 へのアクセス権を付与します。

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text )
  • Amazon S3 アクセスを指定するために credentials パラメータを使用する代わりに、access_keysession_key、および session_token パラメータの組み合わせを使用します。

    aws_s3.table_import_from_s3 ( table_name text, column_list text, options text, bucket text, file_path text, region text, access_key text, secret_key text, session_token text )

これらの代替パラメータについて次の表で説明します。

パラメータ 説明
bucket

ファイルを含む Amazon S3 バケットの名前を含むテキスト文字列。

file_path

ファイルの Amazon S3 パスを含むテキスト文字列。

region ファイルがある AWS リージョンを含むテキスト文字列。
access_key インポートオペレーションに使用するアクセスキーを含むテキスト文字列。デフォルトは NULL です。
secret_key インポートオペレーションに使用するシークレットキーを含むテキスト文字列。デフォルトは NULL です。
session_token (オプション) インポートオペレーションに使用するセッションキーを含むテキスト文字列。デフォルトは NULL です。

aws_commons.create_s3_uri

Amazon S3 ファイル情報を保持するように、aws_commons._s3_uri_1 構造を作成します。aws_commons.create_s3_uri 関数の結果は、aws_s3.table_import_from_s3 関数の s3_info パラメータで使用します。関数の構文は次のとおりです。

aws_commons.create_s3_uri( bucket text, file_path text, region text )

aws_commons.create_s3_uri 関数のパラメータを以下の表で説明します。

パラメータ 説明
bucket

ファイルの Amazon S3 バケット名を含む必須のテキスト文字列。

file_path

ファイルの Amazon S3 パスを含む必須のテキスト文字列。

region

ファイルがある AWS リージョンを含む必須のテキスト文字列。

aws_commons.create_aws_credentials

aws_commons._aws_credentials_1 構造でアクセスキーとシークレットキーを設定します。aws_commons.create_aws_credentials 関数の結果は、aws_s3.table_import_from_s3 関数の credentials パラメータで使用します。関数の構文は次のとおりです。

aws_commons.create_aws_credentials( access_key text, secret_key text, session_token text )

aws_commons.create_aws_credentials 関数のパラメータは以下の表で説明します。

パラメータ 説明
access_key

Amazon S3 ファイルのインポートに使用するアクセスキーを含む必須のテキスト文字列。デフォルトは NULL です。

secret_key Amazon S3 ファイルのインポートに使用するシークレットキーを含む必須のテキスト文字列。デフォルトは NULL です。
session_token Amazon S3 ファイルのインポートに使用するセッショントークンを含む必須のテキスト文字列。デフォルトは NULL です。オプションの session_token を指定した場合は、一時的な認証情報を使用することができます。