Cloud SQL にデータをインポートする

このページでは、データを Cloud SQL にインポートする方法を説明しています。データのインポートのベスト プラクティスについては、データのインポートとエクスポートのベスト プラクティスをご覧ください。

SQL ダンプファイルを Cloud SQL にインポートする

始める前に

  • SQL ダンプファイルには、トリガー、ビュー、ストアド プロシージャを含めることはできません。データベースにこうしたコンポーネントが必要な場合は、それらをダンプファイルから除外し、データをインポートした後で再作成する必要があります。これらのコンポーネントを含むダンプファイルがすでに作成されている場合は、ファイルを手動で編集してコンポーネントを削除するか、別のダンプファイルを作成する必要があります。

    Cloud SQL にインポートできる SQL ダンプファイルの作成については、SQL ダンプファイルの作成をご覧ください。

  • インポートするデータベースは、Cloud SQL インスタンスにあらかじめ存在している必要があります。

    データベースの作成方法については、データベースを作成するをご覧ください。

SQL ダンプファイルをインポートする

SQL ダンプファイルを Cloud SQL インスタンスにインポートする手順は次のとおりです。

Console

  1. SQL ダンプファイルをまだ作成していない場合は、作成します。このとき、必須パラメータを使用して、ダンプファイルが確実に Cloud SQL で使用可能であるようにします。

    SQL ダンプファイルの作成方法については、SQL ダンプファイルを作成するをご覧ください。

  2. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  3. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  4. Google Cloud Platform Console で [Cloud SQL インスタンス] ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  5. インスタンスを選択して [インスタンスの詳細] ページを開きます。
  6. ボタンバーで [インポート] をクリックします。
  7. アップロードしたバケットと SQL ダンプファイルのパスを入力します。または、[参照] をクリックしてこのパスを参照し、バケットの名前をダブルクリックして、ファイルを選択し、[選択] をクリックします。

    圧縮ファイル(.gz)と非圧縮ファイル(.sql)のどちらを使用してもかまいません。

  8. [形式] で [SQL] を選択します。
  9. データをインポートするデータベースを選択します。

    これにより Cloud SQL では、インポートに先立って USE DATABASE ステートメントが実行されます。

  10. [インポート] をクリックしてインポートを開始します。

gcloud(第 2 世代)

  1. SQL ダンプファイルをまだ作成していない場合は、作成します。このとき、必須パラメータを使用して、ダンプファイルが確実に Cloud SQL で使用可能であるようにします。

    SQL ダンプファイルの作成方法については、SQL ダンプファイルを作成するをご覧ください。

  2. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  3. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  4. インポート先のインスタンスを記述します。
    gcloud sql instances describe [INSTANCE_NAME]
    
  5. serviceAccountEmailAddress フィールドをコピーします。
  6. サービス アカウントをバケットの ACL に書き込み権限で追加します。
    gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:W gs://[BUCKET_NAME]
    
  7. サービス アカウントをインポート ファイルに読み取り権限で追加します。
    gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:R gs://[BUCKET_NAME]/[IMPORT_FILE_NAME]
    
  8. データベースをインポートします。
    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME] \
                                --database=[DATABASE_NAME]
    

    import sql コマンドの使用方法については、sql import sql コマンドのリファレンス ページをご覧ください。

    コマンドから「ERROR_RDBMS」のようなエラーが返された場合は、権限を確認してください。このエラーの原因は多くの場合、権限の問題にあります。

  9. 以前に設定した ACL によって提供されるアクセス権を保持する必要がない場合は、ACL を削除します。
    gsutil acl ch -d [SERVICE_ACCOUNT_ADDRESS] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME]
    gsutil acl ch -d [SERVICE_ACCOUNT_ADDRESS] gs://[BUCKET_NAME]
    

gcloud(第 1 世代)

  1. SQL ダンプファイルをまだ作成していない場合は、作成します。このとき、必須パラメータを使用して、ダンプファイルが確実に Cloud SQL で使用可能であるようにします。

    SQL ダンプファイルの作成方法については、SQL ダンプファイルを作成するをご覧ください。

  2. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  3. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  4. データベースをインポートします。

    gcloud sql import sql [INSTANCE_NAME] gs://[BUCKET_NAME]/[IMPORT_FILE_NAME]
    

    「ERROR_RDBMS」のようなエラーが発生した場合、そのバケットからインポートするための適切な権限がない可能性があります。バケットに対して少なくとも「書き込み」権限があり、エクスポート ファイルに対して「読み取り」権限があることを確認してください。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。

    import sql コマンドの使用方法については、sql import sql コマンドのリファレンス ページをご覧ください。

cURL

  1. SQL ダンプファイルをまだ作成していない場合は、作成します。このとき、必須パラメータを使用して、ダンプファイルが確実に Cloud SQL で使用可能であるようにします。

    SQL ダンプファイルの作成方法については、SQL ダンプファイルを作成するをご覧ください。

  2. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  3. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  4. インスタンスに、バケットへの書き込み権限とファイルへの読み取りアクセス権を与えます。

    ACL の設定について詳しくは、ACL の設定をご覧ください。

  5. ダンプファイルをインポートします。
    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"importContext":
                    {"fileType": "SQL",
                     "uri": "gs://[BUCKET_NAME]/[PATH_TO_DUMP_FILE]",
                     "database": "[DATABASE_NAME]" }}' \
       -X POST \
       https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/import
    
    このリクエストのパラメータの完全な一覧については、インスタンス: インポートのページをご覧ください。
  6. 以前に設定した ACL によって提供されるアクセス権を保持する必要がない場合は、この時点で削除します。

CSV ファイルを Cloud SQL にインポートする

始める前に

  • インポート先のデータベースとテーブルが、Cloud SQL インスタンス上に存在している必要があります。データベースの作成方法については、データベースを作成するをご覧ください。テーブルを作成するには、mysql クライアントで CREATE TABLE SQL ステートメントを使用します。

  • CSV ファイルは、以下の CSV ファイル形式の要件に従う必要があります。

    ファイルがこれらの要件を満たしていない場合は、mysql クライアントで LOAD DATA LOCAL INFILE ステートメントを使用することもできます。このステートメントは、ローカル ファイルをデータベースにロードします。これには、mysql クライアントの --local-infile オプションを使用する必要があります。

CSV ファイル形式の要件

CSV ファイルは、データの行ごとに 1 行を使用し、カンマ区切りのフィールドを持つ必要があります。

Cloud SQL で受け入れられる CSV ファイルの形式は、次の MySQL ステートメントを使用する場合と同じです。

  LOAD DATA INFILE ... CHARACTER SET 'utf8mb4'
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' ESCAPED BY '\"'.

この形式で CSV を作成するには、既存のデータベースからデータをエクスポートするときに、Cloud SQL がインポートで使用したオプションまたは区切り記号を使用する必要があります。例については、CSV ファイルの作成をご覧ください。

CSV ファイルをインポートする

CSV ファイルを使用して Cloud SQL インスタンスにデータをインポートする手順は次のとおりです。

Console

  1. Google Cloud Platform Console で Cloud SQL の [インスタンス] ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを選択して [インスタンスの詳細] ページを開きます。
  3. ボタンバーで [インポート] をクリックします。
  4. Cloud SQL インスタンスにインポートするためにアップロードした CSV ファイルを選択します。
  5. [形式] で [CSV] を選択します。
  6. CSV ファイルをインポートする Cloud SQL インスタンスで [データベース] と [テーブル] を指定します。
  7. オプションで、インポートを行うユーザーを指定できます。
  8. [インポート] をクリックしてインポートを開始します。

gcloud(第 2 世代)

  1. インポート用のバケットを作成します。

    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

    このステップは必須ではありませんが、他のデータへ一切アクセスできないようにするために、実行することを強く推奨します。

  2. CSV ファイルをバケットにアップロードします。
  3. エクスポート元のインスタンスを記述します。
    gcloud sql instances describe [INSTANCE_NAME]
    
  4. serviceAccountEmailAddress フィールドをコピーします。
  5. サービス アカウントをバケットの ACL に書き込み権限で追加します。
    gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:W gs://[BUCKET_NAME]
    
  6. サービス アカウントをインポート ファイルに読み取り権限で追加します。
    gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:R gs://[BUCKET_NAME]/[IMPORT_FILE_NAME]
    
  7. ファイルをインポートします。
    gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --table=[TABLE_NAME]
    

    import csv コマンドの使用方法については、sql import csv コマンドのリファレンス ページをご覧ください。

  8. 以前に設定した ACL によって提供されるアクセス権を保持する必要がない場合は、ACL を削除します。
    gsutil acl ch -d [SERVICE_ACCOUNT_ADDRESS] gs://[BUCKET_NAME]
    

gcloud(第 1 世代)

gcloud sql import csv [INSTANCE_NAME] gs://[BUCKET_NAME]/csvfile.gz \
                            --database=[DATABASE_NAME] --table=[TABLE_NAME]

import csv コマンドの使用方法については、sql import csv コマンドのリファレンス ページをご覧ください。

cURL

  1. Cloud Storage バケットをまだ作成していない場合は、作成します。

    バケットの作成方法については、ストレージ バケットの作成をご覧ください。

  2. ファイルをバケットにアップロードします。

    ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。

  3. バケットへの読み取り権限をインスタンスに与えます。

    ACL の設定について詳しくは、ACL の設定をご覧ください。

  4. ファイルをインポートします。
    ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"importContext":
                      {"fileType": "CSV",
                       "uri": "gs://<BUCKET_NAME>/<PATH_TO_DUMP_FILE>",
                       "database": "<DATABASE_NAME>",
                       "csvImportOptions":
                            {"table": "<TABLE_NAME>"}}}' \
       -X POST \
       https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/import
    
    このリクエストのパラメータの完全な一覧については、インスタンス: インポートのページをご覧ください。
  5. 以前に設定した ACL によって提供されるアクセス権を保持する必要がない場合は、ACL を削除します。

ERROR_RDBMS」のようなエラーが発生した場合、テーブルが存在することを確認してください。存在している場合、バケットに対して正しい権限があることを確認してください。Cloud Storage でのアクセス制御の構成の詳細については、アクセス制御リストの作成と管理をご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...