データベースにデータをロードする - Amazon Redshift

データベースにデータをロードする

クエリエディタ v2 を使用して Amazon Redshift クラスターまたはワークグループのデータベースにデータをロードできます。

サンプルデータをロードする

クエリエディタ v2 には、サンプルデータベースと対応するスキーマにロードできるサンプルデータとノートブックが付属しています。

サンプルデータをロードするには、ロードするサンプルデータに関連付けられている External アイコンをクリックします。クエリエディタ v2 は、データベース sample_data_dev のスキーマにデータをロードし、[Notebooks] (ノートブック) フォルダに保存されたクエリのフォルダを作成します。

次のサンプルデータセットが利用可能です。

tickit

Amazon Redshift ドキュメントのほとんどの例では、tickit というサンプルデータを使用します。このデータは、7 個のテーブルで構成されています。そのうち 2 個はファクトテーブル、5 個はディメンションです。このデータをロードすると、スキーマ tickit がサンプルデータで更新されます。tickit データの詳細については、「Amazon Redshift データベースデベロッパーガイド」の「サンプルデータベース」を参照してください。

tpch

このデータは、決定サポートのベンチマークに使用されます。このデータをロードすると、スキーマ tpch がサンプルデータで更新されます。tpch データの詳細については、「TPC-H」を参照してください。

tpcds

このデータは、決定サポートのベンチマークに使用されます。このデータをロードすると、スキーマ tpcds がサンプルデータで更新されます。tpcds データの詳細については、「TPC-DS」を参照してください。

Amazon S3 からデータをロードする

既存のテーブルまたは新しいテーブルに Amazon S3 データをロードできます。

データを既存のテーブルにロードするには

クエリエディタ v2 は、Amazon S3 からデータをロードするために COPY コマンドを使用します。クエリエディタ v2 の [データのロード] ウィザードで生成および使用される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、Amazon Redshift データベース開発者ガイドの「Amazon S3 からの COPY」を参照してください。

  1. データをロードするデータベースに、テーブルがすでに作成されていることを確認します。

  2. 次に進む前に、クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

    Load[Load data] (データをロード) をクリックします。

  3. [データソース] では、[S3 バケットからロード] を選択します。

  4. [S3 URI][Browse S3] (S3 をブラウズ) をクリックして、ロードするデータが含まれている Amazon S3 バケットを検索します。

  5. 指定した Amazon S3 バケットがターゲットテーブルと同じ AWS リージョン にない場合、[S3 file location] (S3 ファイルの場所) でデータが置かれた AWS リージョン を選択します。

  6. Amazon S3 ファイルが実際に複数の Amazon S3 バケット URI を含むマニフェストである場合。[This file is a manifest file] (このファイルはマニフェストファイルです) を選択します。

  7. アップロードするファイルの [File format] (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの [File options] (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、[Data is encrypted] (データは暗号化されています) を選択できます。

    CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、[区切り文字][ヘッダー行を無視する] を選択することもできます。

  8. 圧縮方法を選択してファイルを圧縮します。デフォルトでは圧縮なしです。

  9. (オプション) [Advanced settings] (詳細設定) では、さまざまな [Data conversion parameters] (データ変換パラメータ) や [Load operations] (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

    データ変換パラメータとデータロードパラメータの詳細については、「Amazon Redshift データベースデベロッパーガイド」の「データ変換パラメータ」と「データのロード操作」を参照してください。

  10. [Next] を選択します。

  11. [既存のテーブルをロード] を選択します。

  12. クラスターまたはワークグループデータベーススキーマ、およびデータがロードされるテーブル名を含む [Target table] (ターゲットテーブル) の場所を確認または選択します。

  13. Amazon S3 からデータをロードするために必要な許可を持つ [IAM role] (IAM ロール) を選択します。

  14. (オプション) 列名を選択して [Column mapping] (列のマッピング) に入力すると、入力データファイルの順序で列がマッピングされます。

  15. [Load data] (データをロード) をクリックして、データのロードを開始します。

    ロードが完了すると、データのロードのために生成された COPY コマンドとともに、クエリエディタが表示されます。COPY の [Result] (結果) は次のように表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL_LOAD_ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、Amazon Redshift データベース開発者ガイドの「STL_LOAD_ERRORS」を参照してください。

新しいテーブルにデータをロードすると、クエリエディタ v2 は最初にデータベースにテーブルを作成してから、同じワークフローの別のアクションとしてデータをロードします。

データを新しいテーブルにロードするには

クエリエディタ v2 は、Amazon S3 からデータをロードするために COPY コマンドを使用します。クエリエディタ v2 の [データのロード] ウィザードで生成および使用される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、Amazon Redshift データベース開発者ガイドの「Amazon S3 からの COPY」を参照してください。

  1. 次に進む前に、クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

    Load[Load data] (データをロード) をクリックします。

  2. [データソース] では、[S3 バケットからロード] を選択します。

  3. [S3 URI][Browse S3] (S3 をブラウズ) をクリックして、ロードするデータが含まれている Amazon S3 バケットを検索します。

  4. 指定した Amazon S3 バケットがターゲットテーブルと同じ AWS リージョン にない場合、[S3 file location] (S3 ファイルの場所) でデータが置かれた AWS リージョン を選択します。

  5. Amazon S3 ファイルが実際に複数の Amazon S3 バケット URI を含むマニフェストである場合。[This file is a manifest file] (このファイルはマニフェストファイルです) を選択します。

  6. アップロードするファイルの [File format] (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの [File options] (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、[Data is encrypted] (データは暗号化されています) を選択できます。

    CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、[区切り文字][ヘッダー行を無視する] を選択することもできます。

  7. 圧縮方法を選択してファイルを圧縮します。デフォルトでは圧縮なしです。

  8. (オプション) [Advanced settings] (詳細設定) では、さまざまな [Data conversion parameters] (データ変換パラメータ) や [Load operations] (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

    データ変換パラメータとデータロードパラメータの詳細については、「Amazon Redshift データベースデベロッパーガイド」の「データ変換パラメータ」と「データのロード操作」を参照してください。

  9. [Next] を選択します。

  10. [新しいテーブルをロード] を選択します。

    テーブルの列は入力データから推測されます。列とテーブルの詳細を追加すると、テーブルスキーマの定義を変更できます。クエリエディタ v2 の推測されたテーブルスキーマに戻すには、[デフォルトに戻す] を選択します。

  11. [クラスターまたはワークグループ][データベース]、およびデータがロードされる[スキーマ]を含む、[ターゲットテーブル] の場所を確認または選択します。作成するテーブルの名前を入力します。

  12. Amazon S3 からデータをロードするために必要な許可を持つ [IAM role] (IAM ロール) を選択します。

  13. [テーブルを作成] を選択し、表示されている定義を使用してテーブルを作成します。

    テーブル定義のレビューの要約が表示されます。テーブルがデータベースに作成されます。後でテーブルを削除するには、DROP TABLE SQL コマンドを実行します。詳細については、Amazon Redshift データベースデベロッパーガイドの「DROP TABLE」を参照してください。

  14. [Load data] (データをロード) をクリックして、データのロードを開始します。

    ロードが完了すると、データのロードのために生成された COPY コマンドとともに、クエリエディタが表示されます。COPY の [Result] (結果) は次のように表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL_LOAD_ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、Amazon Redshift データベース開発者ガイドの「STL_LOAD_ERRORS」を参照してください。

ローカルファイル設定とワークフローからのデータのロード

ローカルファイルから既存のテーブルまたは新しいテーブルにデータをロードできます。

ローカルファイルからデータをロードするための管理者設定

クエリエディタ v2 の管理者は、[Account settings] (アカウント設定) ウィンドウで共通の Amazon S3 バケットを指定する必要があります。アカウントユーザーは適切な権限で設定されている必要があります。

  • 必要な IAM 権限 – ローカルファイルからロードするユーザーには、s3:ListBuckets3:GetBucketLocations3:putObjects3:getObject、および s3:deleteObject 権限が必要です。optional-prefix を指定すると、このバケットのクエリエディタ v2 関連の使用をこのプレフィックスの付いたオブジェクトに制限できます。このオプションは、同じ Amazon S3 バケットをクエリエディタ v2 以外の用途に使用する場合に使用できます。バケットとプレフィックスの詳細については、「Amazon Simple Storage Service」ユーザーガイドの「Managing user access to specific folders」(特定のフォルダへのユーザーアクセスの管理) を参照してください。ユーザー間のデータアクセスが許可されないようにするには、クエリエディタ v2 管理者が Amazon S3 バケットポリシーを使用して、aws:userid に基づいてオブジェクトアクセスを制限することをお勧めします。次の例では、<staging-bucket-name> に、aws:userid というプレフィックスがある Amazon S3 オブジェクトのみへの読み取り/書き込み Amazon S3 アクセス権限を許可します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::<staging-bucket-name>" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*" ] } ] }
  • データの分離 – ユーザーがお互いのデータに (たとえ短時間でも) アクセスできないようにすることをお勧めします。ローカルファイルからのロードでは、クエリエディタ v2 管理者が設定したステージング Amazon S3 バケットを使用します。ステージングバケットのバケットポリシーを設定して、ユーザー間のデータを分離します。次の例は、<staging-bucket-name> のユーザー間でデータを分離するバケットポリシーを示しています。

    { "Version": "2012-10-17", "Statement": [ {"Sid": "userIdPolicy", "Effect": "Deny", "Principal": "*", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "NotResource": [ "arn:aws:s3:::<staging-bucket-name>[/<optional-prefix>]/${aws:userid}/*" ] } ] }

ローカルファイルからのデータのロード

ローカルファイルデータを既存のテーブルにロードするには

クエリエディタ v2 の管理者は、アカウント設定ウィンドウで共通の Amazon S3 バケットを指定する必要があります。クエリエディタ v2 は、アカウントが使用する共通の Amazon S3 バケットにローカルファイルを自動的にアップロードしてから、COPY コマンドを使用してデータをロードします。クエリエディタ v2 のローカルファイルの読み込みウィンドウで生成および実行される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、「Amazon Redshift データベース開発者ガイド」の「Amazon S3 からの COPY」を参照してください。

  1. データをロードするデータベースに、テーブルがすでに作成されていることを確認します。

  2. クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

  3. Load[Load data] (データをロード) をクリックします。

  4. [Data source] (データソース) で、[Load from local file] (ローカルファイルからロード) を選択します。

  5. [ブラウズする] を選択して、データが含まれるファイルを検索してファイルをロードします。デフォルトでは、拡張子 .csv.avro.parquet.orc のファイルが表示されますが、他のファイルタイプも選択できます。 ファイルの最大サイズは 100 MB です。

  6. アップロードするファイルの [File format] (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの [File options] (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、[Data is encrypted] (データは暗号化されています) を選択できます。

    CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、[区切り文字][ヘッダー行を無視する] を選択することもできます。

  7. (オプション) [Advanced settings] (詳細設定) では、さまざまな [Data conversion parameters] (データ変換パラメータ) や [Load operations] (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

    データ変換パラメータとデータロードパラメータの詳細については、「Amazon Redshift データベースデベロッパーガイド」の「データ変換パラメータ」と「データのロード操作」を参照してください。

  8. [Next] を選択します。

  9. [既存のテーブルをロード] を選択します。

  10. クラスターまたはワークグループデータベーススキーマ、およびデータがロードされるテーブル名を含む [Target table] (ターゲットテーブル) の場所を確認または選択します。

  11. (オプション) 列名を選択して [Column mapping] (列のマッピング) に入力すると、入力データの順序で列をマッピングすることができます。

  12. [Load data] (データをロード) をクリックして、データのロードを開始します。

    ロードが完了すると、ロードが成功したかどうかのメッセージが表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL_LOAD_ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、Amazon Redshift データベース開発者ガイドの「STL_LOAD_ERRORS」を参照してください。

    データをロードするために使用された COPY コマンドテンプレートが [Query history] (クエリ履歴) に表示されます。この COPY コマンドテンプレートには、使用されているパラメータの一部が表示されますが、エディタタブで直接実行することはできません。クエリ履歴の詳細については、「クエリとタブの履歴を表示する」を参照してください。

新しいテーブルにデータをロードすると、クエリエディタ v2 は最初にデータベースにテーブルを作成してから、同じワークフローの別のアクションとしてデータをロードします。

ローカルファイルデータを新しいテーブルにロードするには

クエリエディタ v2 の管理者は、[Account settings] (アカウント設定) ウィンドウで共通の Amazon S3 バケットを指定する必要があります。ローカルファイルは、アカウントが使用する共通の Amazon S3 バケットに自動的にアップロードされ、クエリエディタ v2 は COPY コマンドを使用してデータをロードします。クエリエディタ v2 のローカルファイルの読み込みウィンドウで生成および実行される COPY コマンドは、Amazon S3 からのコピー時に COPY コマンド構文で使用できる、多くのパラメータをサポートしています。Amazon S3 からデータをロードするための COPY コマンドと使用するオプションの詳細については、「Amazon Redshift データベース開発者ガイド」の「Amazon S3 からの COPY」を参照してください。

  1. クエリエディタ v2 のツリービューパネルで、ターゲットデータベースに接続していることを確認します。コンテキストメニュー (右クリック) を使用して、データをロードするクラスターまたはワークグループへの接続を作成できます。

  2. Load[Load data] (データをロード) をクリックします。

  3. [Data source] (データソース) で、[Load from local file] (ローカルファイルからロード) を選択します。

  4. [ブラウズする] を選択して、データが含まれるファイルを検索してファイルをロードします。デフォルトでは、拡張子 .csv.avro.parquet.orc のファイルが表示されますが、他のファイルタイプも選択できます。 ファイルの最大サイズは 100 MB です。

  5. アップロードするファイルの [File format] (ファイル形式) を選択します。サポートされているデータ形式は、CSV、JSON、DELIMITER、FIXEDWIDTH、SHAPEFILE、AVRO、PARQUET、ORC です。指定したファイル形式に応じて、それぞれの [File options] (ファイルオプション) を選択できます。また、データが暗号化されており、暗号化に使用する KMS キーの Amazon リソースネーム (ARN) を入力した場合には、[Data is encrypted] (データは暗号化されています) を選択できます。

    CSV または DELIMITER を選択すると、指定した行数が実際には列名であり、ロードするデータではない場合に、[区切り文字][ヘッダー行を無視する] を選択することもできます。

  6. (オプション) [Advanced settings] (詳細設定) では、さまざまな [Data conversion parameters] (データ変換パラメータ) や [Load operations] (ロードオペレーション) がサポートされています。ファイルの必要に応じて、この情報を入力します。

    データ変換パラメータとデータロードパラメータの詳細については、「Amazon Redshift データベースデベロッパーガイド」の「データ変換パラメータ」と「データのロード操作」を参照してください。

  7. [Next] を選択します。

  8. [新しいテーブルをロード] を選択します。

  9. [クラスターまたはワークグループ][データベース]、およびデータがロードされる[スキーマ]を含む、[ターゲットテーブル] の場所を確認または選択します。作成するテーブルの名前を入力します。

  10. [テーブルを作成] を選択し、表示されている定義を使用してテーブルを作成します。

    テーブル定義のレビューの要約が表示されます。テーブルがデータベースに作成されます。後でテーブルを削除するには、DROP TABLE SQL コマンドを実行します。詳細については、Amazon Redshift データベースデベロッパーガイドの「DROP TABLE」を参照してください。

  11. [Load data] (データをロード) をクリックして、データのロードを開始します。

    ロードが完了すると、ロードが成功したかどうかを示すメッセージが表示されます。成功すると、ロードされたテーブルから SQL を使用してデータを選択できるようになります。エラーが発生した場合は、システムビュー STL_LOAD_ERRORS にクエリを実行して、詳細を取得します。COPY コマンドとそのエラーについては、Amazon Redshift データベース開発者ガイドの「STL_LOAD_ERRORS」を参照してください。

    データをロードするために使用された COPY コマンドテンプレートが [Query history] (クエリ履歴) に表示されます。この COPY コマンドテンプレートには、使用されているパラメータの一部が表示されますが、エディタタブで直接実行することはできません。クエリ履歴の詳細については、「クエリとタブの履歴を表示する」を参照してください。