SQL ダンプファイルを使用したエクスポートとインポート

このページでは、Cloud SQL インスタンスで SQL ダンプファイルを使用してデータのエクスポートとインポートを行う方法について説明します。

Cloud SQL から SQL ダンプファイルへのエクスポートは、SQL Server ではサポートされていません。

始める前に

エクスポートではデータベース リソースが使用されますが、インスタンスがプロビジョニングされていない限り、エクスポートによって通常のデータベース オペレーションが妨げられることはありません。

ベスト プラクティスについては、データのインポートとエクスポートのベスト プラクティスをご覧ください。

インポート オペレーションが完了したら、結果を確認します。

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

Cloud SQL から SQL ダンプファイルへのエクスポートは、SQL Server ではサポートされていません。

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

Cloud SQL for SQL Server へのインポートに必要なロールと権限

Cloud Storage から Cloud SQL にデータをインポートするには、Cloud SQL インスタンスのサービス アカウントまたはユーザーに次のいずれかのロールセットが必要です。

  • Cloud SQL 管理者のロールと storage.objectAdmin IAM ロール
  • 次の権限を含むカスタムロール:
    • cloudsql.instances.get
    • cloudsql.instances.import
    • storage.buckets.get
    • storage.objects.get
    • storage.objects.list(ファイルの並列インポートの場合のみ)
    • storage.objects.list(ストライプ エクスポートの場合のみ)

IAM ロールについては、Identity and Access Management をご覧ください。

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

SQL ファイルは、SQL コマンドのシーケンスを記述した書式なしテキスト ファイルです。

以下の手順では、SQL ファイルのインポート元となる既存のデータベースを指定します。

コンソール

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

    Cloud SQL の [インスタンス] に移動

  2. インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
  3. [インポート] をクリックします。
  4. [データのインポート元となるファイルを選択してください] セクションで、インポートに使用するバケットと SQL ダンプファイルのパスを入力するか、既存のファイルを参照します。

    圧縮ファイル(.gz)または非圧縮ファイル(.sql)ファイルをインポートできます。

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

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

  7. インポートを実行するユーザーを指定する場合は、ユーザーを選択します。

    インポート ファイルに、特定のユーザーで実行しなければならないステートメントが含まれている場合は、このフィールドを使用してユーザーを指定します。

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

gcloud

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

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

  3. インポート先のインスタンスを記述します。
    gcloud sql instances describe INSTANCE_NAME
    
  4. serviceAccountEmailAddress フィールドをコピーします。
  5. gsutil iam を使用して、バケットのサービス アカウントに storage.objectAdmin IAM ロールを付与します。
    gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
    gs://BUCKET_NAME
      
    IAM 権限の設定については、IAM 権限の使用をご覧ください。
  6. データベースをインポートします。
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME
    

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

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

  7. 以前に設定した IAM の権限を保持する必要がない場合は、gsutil iam を使用して削除してください。

REST v1

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

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

  3. バケットに対する legacyBucketWriterobjectViewerIAM ロールをインスタンスに付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  4. ダンプファイルをインポートします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • bucket_name: Cloud Storage バケット名
    • path_to_sql_file: SQL ファイルへのパス
    • database_name: Cloud SQL インスタンス内のデータベースの名前

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    リクエストの本文(JSON):

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
  5. 以前に設定した IAM の権限を保持する必要がない場合は、今すぐ削除してください。

REST v1beta4

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

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

  3. インスタンスにバケットに対する storage.objectAdmin IAM のロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。
  4. ダンプファイルをインポートします。

    リクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • bucket_name: Cloud Storage バケット名
    • path_to_sql_file: SQL ファイルへのパス
    • database_name: Cloud SQL インスタンス内のデータベースの名前

    HTTP メソッドと URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    リクエストの本文(JSON):

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    このリクエストのパラメータの完全な一覧については、instances:import ページをご覧ください。
  5. 以前に設定した IAM の権限を保持する必要がない場合は、今すぐ削除してください。

次のステップ