Cloud SQL からデータをエクスポートする

このページでは、Cloud SQL から Cloud Storage にデータをエクスポートする方法について説明します。エクスポートした後、Cloud Storage からローカル環境にデータをダウンロードすれば、そのデータにローカルでアクセスできるようになります。

データのエクスポートにおすすめの方法については、データのインポートとエクスポートにおすすめの方法をご覧ください。

始める前に

エクスポートするファイル形式を決定します。

CSV ファイルをエクスポートすると、他のデータベースやツールで使用できます。また、SQL ダンプファイルをエクスポートして、別の SQL データベースにエクスポートすることもできます。

SQL ダンプファイルにデータをエクスポートする

Cloud SQL からエクスポートする場合は、--single-transaction--skip-triggers--hex-blob の各オプションを指定した mysqldump ユーティリティを使用し、MySQL データベースを除外します。このため、エクスポートには、トリガー、ストアド プロシージャ、関数が含まれません。データベースにこうした要素が必要な場合は、データをインポートした後で手動で再作成する必要があります。

このエクスポートが要件を満たしていない場合は、必要なオプションをすべて使用して、Cloud SQL データベースに対して直接 mysqldump ユーティリティを実行することもできます。

Cloud SQL を使用してデータをエクスポートする

Console

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

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

  2. データのエクスポート元となるインスタンスをクリックし、インスタンスの詳細ページを開きます。
  3. ボタンバーで [エクスポート] をクリックします。
  4. [Cloud Storage のエクスポート先] で、エクスポート先の Cloud Storage バケットかフォルダを選択します。
  5. [名前] フィールドにエクスポート ファイルの名前を入力し、[選択] をクリックします。
  6. [形式] で [SQL] を選択します。
  7. [詳細設定を表示] をクリックし、エクスポートするデータベースをすべて記載したカンマ区切りのリストを入力します。このとき、システム データベースは含めないでください。
  8. [エクスポート] をクリックしてエクスポートを開始します。

gcloud(第 2 世代)

ダンプファイルをインスタンスから Cloud Storage バケットへエクスポートするには:

  1. エクスポート先のバケットを作成します。
      gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
      

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

  2. エクスポート元のインスタンスを記述します。
      gcloud sql instances describe [INSTANCE_NAME]
      
  3. serviceAccountEmailAddress フィールドをコピーします。
  4. サービス アカウントをバケットの ACL に書き込み権限で追加します。
      gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:W gs://[BUCKET_NAME]
      
  5. データベースをエクスポートします。
      gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
                                  --database=[DATABASE_NAME]
      

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

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

gcloud(第 1 世代)

gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz \
                            --database [DATABASE_NAMES]

ERROR_RDBMS のようなエラーが発生した場合、そのバケットへエクスポートするために必要な権限がない可能性があります。バケットに対して少なくとも WRITER 権限があることを確認してください。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。

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

cURL

  1. エクスポート先のバケットを作成します。
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

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

  2. バケットへの書き込み権限をインスタンスに付与します。

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

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

CSV ファイルにデータをエクスポートする

他のツールや環境で使用可能な CSV 形式でデータをエクスポートできます。

Console

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

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

  2. インスタンスをクリックして、インスタンスの概要ページを開きます。
  3. [エクスポート] をクリックします。
  4. [Cloud Storage のエクスポート先] で、エクスポート先の Cloud Storage バケットかフォルダを選択します。
  5. [名前] フィールドにエクスポート ファイルの名前を入力し、[選択] をクリックします。

    ファイル拡張子 .gz を使用して、エクスポート ファイルを圧縮します。

  6. [形式] を [CSV] に設定します。
  7. SQL クエリを入力して、エクスポートするデータを指定します。

    たとえば、guestbook データベースの entries テーブルの内容全体をエクスポートするには、「SELECT * FROM guestbook.entries;」と入力します。 クエリではテーブルを指定する必要があります。データベース全体を CSV 形式でエクスポートすることはできません。

  8. [エクスポート] をクリックしてエクスポートを開始します。

gcloud(第 2 世代)

  1. エクスポート先のバケットを作成します。
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

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

  2. エクスポート元のインスタンスを記述します。
    gcloud sql instances describe [INSTANCE_NAME]
    
  3. serviceAccountEmailAddress フィールドをコピーします。
  4. サービス アカウントをバケットの ACL に書き込み権限で追加します。
    gsutil acl ch -u [SERVICE_ACCOUNT_ADDRESS]:W gs://[BUCKET_NAME]
    
  5. データベースをエクスポートします。
    gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                                --database=[DATABASE_NAME] --query=[SELECT_QUERY]
    

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

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

gcloud(第 1 世代)

gcloud sql export csv [INSTANCE_NAME] gs://[BUCKET_NAME]/[FILE_NAME] \
                            --database [DATABASE_NAME] --query=[SELECT_QUERY]

エラーが発生した場合、そのバケットにエクスポートするために必要な権限がない可能性があります。バケットに対して少なくとも WRITER 権限があることを確認してください。Cloud Storage のアクセス制御の構成について詳しくは、アクセス制御リストの作成と管理をご覧ください。

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

cURL

  1. エクスポート先のバケットを作成します。
    gsutil mb -p [PROJECT_NAME] -l [LOCATION_NAME] gs://[BUCKET_NAME]
    

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

  2. バケットへの書き込み権限をインスタンスに付与します。

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

  3. データベースをエクスポートします。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"exportContext":
                    {"fileType": "CSV",
                     "uri": "gs://<BUCKET_NAME>/<PATH_TO_DUMP_FILE>",
                     "databases": ["<DATABASE_NAME>"] },
                     "csvExportOptions":
                         {"selectQuery":"<SELECT_QUERY>"}}' \
       -X POST \
       https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/export
    

    SELECT クエリでデータベースが指定されている場合は、databases プロパティがオーバーライドされます。

  4. 以前に設定した ACL によって提供されるアクセス権を保持する必要がない場合は、ACL を削除します。
このリクエストのパラメータの一覧については、instances:export ページをご覧ください。

CSV 形式でのエクスポートは、次の SQL ステートメントの実行と同等です。

  SELECT <query> INTO OUTFILE ... CHARACTER SET 'utf8mb4'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
        ESCAPED BY '\\' LINES TERMINATED BY '\n'

次のステップ

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

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