このページでは、Cloud Storage バケットに保存されている SQL ファイルから AlloyDB for PostgreSQL クラスタにデータをインポートする方法について説明します。SQL ファイルは、SQL コマンドのシーケンスを記述した書式なしテキスト ファイルです。
AlloyDB クラスタへのデータのインポートをキャンセルできます。詳細については、インポート オペレーションをキャンセルするをご覧ください。
始める前に
インポート オペレーションを開始する前に、次のことを行います。
- データベースに十分な空き容量があることを確認します。
- インポート オペレーションではデータベース リソースが使用されますが、クラスタがプロビジョニングされていない限り、インポートによって通常のデータベース オペレーションが妨げられることはありません。
AlloyDB へのインポートに必要なロールと権限
Cloud Storage から AlloyDB にデータをインポートするには、インポートを開始するユーザーに次のいずれかのロールが必要です。
- AlloyDB 管理者ロール
- 次の権限を含むカスタムロール。
alloydb.clusters.get
alloydb.clusters.import
また、AlloyDB クラスタのサービス アカウントには、次のいずれかのロールが必要です。
storage.objectViewer
IAM ロール- 次の権限を含むカスタムロール:
storage.objects.get
IAM ロールについては、Identity and Access Management をご覧ください。
SQL ファイルを AlloyDB クラスタにインポートする
SQL ファイルを使用して AlloyDB クラスタにデータをインポートする手順は次のとおりです。
コンソール
[クラスタ] ページに移動します。
クラスタ名をクリックして、そのクラスタの [概要] ページを開きます。
[インポート] をクリックします。
[データのインポート元となるファイルを選択してください] で、インポートに使用するバケットと SQL ファイルのパスを入力するか、既存のファイルを参照します。
データをインポートするデータベースを選択します。
これにより、AlloyDB ではインポート前に
USE DATABASE
ステートメントが実行されます。SQL ダンプファイルにUSE DATABASE
ステートメントが含まれている場合、Google Cloud コンソールで設定したデータベースがオーバーライドされます。省略可: インポート オペレーションのユーザーを指定します。インポート ファイルに、特定のユーザーで実行しなければならないステートメントが含まれている場合は、このフィールドを使用してユーザーを指定します。
インポート オペレーションを開始するには、[インポート] をクリックします。
gcloud
- Cloud Storage バケットを作成する。
SQL ファイルをバケットにアップロードします。ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。
gcloud storage buckets add-iam-policy-binding を使用して、バケットの AlloyDB クラスタのサービス アカウントに
storage.objectViewer
IAM ロールを付与します。service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前。
- REGION: AlloyDB クラスタがデプロイされているリージョン。
- BUCKET_NAME: Cloud Storage バケット名。
- FILE_NAME: CSV ファイルの名前。
- DATABASE_NAME: クラスタ内のデータベースの名前。
- USER: インポート オペレーションのユーザー。
- TABLE_NAME: データベース内のテーブル。
IAM 権限の設定については、IAM 権限の使用をご覧ください。
ファイルをインポートします。
gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql
コマンドから
PERMISSION_DENIED
のようなエラーが返された場合は、権限を確認してください。import
コマンドの使用方法については、alloydb import
コマンドのリファレンス ページをご覧ください。以前に設定した IAM 権限を保持する必要がない場合は、
gcloud storage buckets remove-iam-policy-binding
を使用して削除します。
REST v1
- Cloud Storage バケットを作成する。
- SQL ファイルをバケットにアップロードします。ファイルをバケットにアップロードする方法については、オブジェクトのアップロードをご覧ください。
インポート オペレーション用の Cloud Storage バケットに対する権限をサービス アカウントに付与します。サービス アカウントの形式を使用して、インポート先のプロジェクトのサービス アカウントを特定します。サービス アカウントの形式は次のとおりです。
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
gcloud storage buckets add-iam-policy-binding を使用して、バケットの AlloyDB クラスタのサービス アカウントに
storage.objectViewer
IAM ロールを付与します。IAM 権限の設定については、IAM 権限の使用をご覧ください。SQL ファイルをインポートします。
次の HTTP メソッドと URL を使用します。
POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import
リクエスト データを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID。
- LOCATION_ID: AlloyDB クラスタがデプロイされているリージョン。
- CLUSTER_ID: クラスタ ID。
- BUCKET_NAME: Cloud Storage バケット名。
- PATH_TO_SQL_FILE: SQL ファイルのパス。
- USER: インポートに使用するユーザー。
- DATABASE_NAME: AlloyDB クラスタ内のデータベースの名前。
JSON 本文のリクエスト:
{ "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE", "database": "DATABASE_NAME", "user": "USER", "sqlImportOptions": {} }
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
リクエスト本文を
request.json
という名前のファイルに保存し、次のコマンドを実行します。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
PowerShell(Windows)
リクエスト本文を
request.json
という名前のファイルに保存して、次のコマンドを実行します。$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
次のような JSON レスポンスが返されます。
レスポンス
{ "name": "projects/project-id/locations/location-id/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata", "createTime": "2025-01-04T13:12:32.363393723Z", "target": "projects/project-id/locations/location-id/clusters/cluster-id", "verb": "import", "requestedCancellation": false, "apiVersion": "v1" }, "done": false }
別のユーザーがインポートするには、user プロパティを指定します。
以前に設定した IAM 権限を保持する必要がない場合は、今すぐ削除してください。
リクエストのパラメータの一覧については、
clusters:import
をご覧ください。
インポート オペレーションのステータスを確認する
インポート オペレーションのステータスを確認する手順は次のとおりです。
gcloud
gcloud alloydb operations describe
コマンドを使用して、次のコマンドを実行します。
gcloud alloydb operations describe OPERATION_ID --region=REGION
特定のオペレーションの詳細を一覧表示したり、特定のオペレーションをキャンセルしたりすることもできます。このコマンドの詳細については、gcloud alloydb operations
コマンドのリファレンス ページをご覧ください。
REST v1
GET
メソッドと次の URL を使用します。
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
詳細については、get
をご覧ください。
リクエスト データを使用する前に、次のように置き換えます。
- REGION: AlloyDB クラスタがデプロイされているリージョン。
- PROJECT_ID: プロジェクト ID。
- OPERATION_ID: インポート オペレーションの ID。詳細については、始める前にをご覧ください。
リクエストを送信するには、次のいずれかのオプションを展開します。
curl(Linux、macOS、Cloud Shell)
次のコマンドを実行します。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
PowerShell(Windows)
次のコマンドを実行します。
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method GET ` -Headers $headers ` -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
成功した場合、レスポンスの本文には Operation のインスタンスが含まれます。
次のステップ
- CSV ファイルをインポートする方法を確認する
- インポート オペレーションをキャンセルする方法を確認する。
- インポート オペレーションのステータスを確認します。