使用 SQL 傾印檔案匯出及匯入

本頁面說明如何使用 SQL dump 檔案,將資料匯出及匯入 Cloud SQL 執行個體。

SQL Server 不支援從 Cloud SQL 匯出至 SQL dump 檔案。

事前準備

匯出作業會使用資料庫資源,但不會干擾正常的資料庫作業,除非執行個體佈建不足。

如需最佳做法,請參閱「匯入及匯出資料的最佳做法」。

完成匯入作業後,請驗證結果。

從 SQL Server 適用的 Cloud SQL 匯出資料

SQL Server 不支援從 Cloud SQL 匯出至 SQL dump 檔案。

將資料匯入 SQL Server 適用的 Cloud SQL

將資料匯入 SQL Server 適用的 Cloud SQL 所需的角色和權限

如要將資料從 Cloud Storage 匯入 Cloud SQL,發起匯入作業的使用者必須具備下列其中一個角色:

此外,Cloud SQL 執行個體的服務帳戶必須具備下列其中一個角色:

  • storage.objectAdmin IAM 角色
  • 自訂角色,包括下列權限:
    • storage.objects.get
    • storage.objects.list (僅適用於條紋匯入)

如需 IAM 角色方面的協助,請參閱「身分與存取權管理」。

將 SQL dump 檔案匯入 SQL Server 適用的 Cloud SQL

SQL 檔案是純文字檔案,含有一系列 SQL 指令。

在下列程序中,請準備指定要從哪個現有資料庫匯入 SQL 檔案。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往 Cloud SQL 執行個體

  2. 點選執行個體名稱,開啟執行個體的「總覽」頁面。
  3. 按一下「匯入」。
  4. 在「檔案格式」部分,選取「SQL」。
  5. 在「Select source file」(選取來源檔案) 區段中,輸入要用於匯入作業的 bucket 和 SQL dump 檔案路徑、瀏覽現有檔案,或上傳本機檔案。

    您可以匯入壓縮 (.gz) 或未壓縮 (.sql) 的檔案。

  6. 在「目的地」部分,選取要匯入資料的資料庫。

    Cloud SQL 會在匯入前執行 USE DATABASE 陳述式。

  7. 如要指定執行匯入作業的使用者,請選取該使用者。

    如果匯入檔案包含必須由特定使用者執行的陳述式,請使用這個欄位指定該使用者。

  8. 按一下 [Import] (匯入) 即可開始匯入。

gcloud

  1. 建立 Cloud Storage bucket。
  2. 將檔案上傳至 bucket。

    如需將檔案上傳至 bucket 的相關說明,請參閱「上傳物件」。

  3. 說明您要匯入的目標執行個體:
    gcloud sql instances describe INSTANCE_NAME
  4. 複製 serviceAccountEmailAddress 欄位。
  5. 使用 gcloud storage buckets add-iam-policy-binding 將 storage.objectAdmin IAM 角色授予 bucket 的服務帳戶。
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    如需設定 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 權限,請使用 gcloud storage buckets remove-iam-policy-binding 移除這些權限。

REST v1

  1. 建立 Cloud Storage bucket。
  2. 將檔案上傳至 bucket。

    如需將檔案上傳至 bucket 的相關說明,請參閱「上傳物件」。

  3. 為執行個體提供 bucket 的 storage.objectAdmin 和 objectViewer IAM 角色。如需設定 IAM 權限的相關說明,請參閱「使用 IAM 權限」。
  4. 匯入 dump 檔案:

    使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • bucket_name:Cloud Storage bucket 名稱
    • path_to_sql_file:SQL 檔案的路徑
    • database_name:Cloud SQL 執行個體中的資料庫名稱

    HTTP 方法和網址:

    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 bucket。
  2. 將檔案上傳至 bucket。

    如需將檔案上傳至 bucket 的相關說明,請參閱「上傳物件」。

  3. 為執行個體提供 bucket 的 storage.objectAdmin IAM 角色。如需設定 IAM 權限的相關說明,請參閱「使用 IAM 權限」。
  4. 匯入 dump 檔案:

    使用任何要求資料之前,請先修改下列項目的值:

    • project-id:專案 ID
    • instance-id:執行個體 ID
    • bucket_name:Cloud Storage bucket 名稱
    • path_to_sql_file:SQL 檔案的路徑
    • database_name:Cloud SQL 執行個體中的資料庫名稱

    HTTP 方法和網址:

    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 權限,請立即移除。

後續步驟