匯出資料表資料

本頁面說明如何匯出或擷取 BigQuery 資料表中的資料。

將資料載入 BigQuery 後,您就可以匯出數種格式的資料。BigQuery 對每個檔案最多可匯出 1 GB 資料。如果要匯出的資料超過 1 GB,就必須將資料分別匯出成多個檔案。當您將資料匯出成多個檔案時,各個檔案的大小會有所差異。

您可以使用 Dataflow 等服務來讀取 BigQuery 中的資料,不必手動將資料匯出。如要進一步瞭解如何使用 Dataflow 讀取 BigQuery 的資料及將資料寫入 BigQuery,請參閱 Apache Beam 說明文件中的 BigQuery I/O

所需權限

如要將資料匯出至 Cloud Storage,您必須擁有存取資料所屬 BigQuery 資料表的權限、執行匯出工作的權限,以及將資料寫入 Cloud Storage 值區的權限。

BigQuery 權限

  • 您至少必須擁有 bigquery.tables.export 權限,才能匯出資料。以下是擁有 bigquery.tables.export 權限的預先定義 Cloud IAM 角色:

    • bigquery.dataViewer
    • bigquery.dataOwner
    • bigquery.dataEditor
    • bigquery.admin
  • 您至少必須擁有 bigquery.jobs.create 權限,才能執行匯出工作。以下是擁有 bigquery.jobs.create 權限的預先定義 Cloud IAM 角色:

    • bigquery.user
    • bigquery.jobUser
    • bigquery.admin

Cloud Storage 權限

  • 如要將資料寫入現有的 Cloud Storage 值區,您必須擁有 storage.objects.create 權限。以下是擁有 storage.objects.create 權限的預先定義 Cloud IAM 角色:

    • storage.objectCreator
    • storage.objectAdmin
    • storage.admin

匯出限制

當您從 BigQuery 匯出資料時,請注意以下幾點:

  • 您無法將資料表資料匯出至本機檔案、Google 試算表或 Google 雲端硬碟。唯一支援的匯出位置是 Cloud Storage。如需儲存查詢結果的相關資訊,請查看下載並儲存查詢結果一節。
  • 您最多可將 1 GB 的資料表資料匯出至單一檔案。如果您匯出的資料超過 1 GB,請使用萬用字元將資料匯出到多個檔案。當您將資料匯出成多個檔案時,各個檔案的大小會有所差異。
  • 您無法將巢狀與重複資料匯出成 CSV 格式。巢狀與重複資料適用於 Avro 和 JSON 匯出。
  • 匯出 JSON 格式的資料時,系統會將 INT64 (整數) 資料類型編碼為 JSON 字串,以便該資料讓其他系統讀取時能保留 64 位元精確度。
  • 您無法在單一匯出工作中,從多個資料表匯出資料。
  • 當您從分區資料表匯出資料時,無法匯出個別分區。
  • 使用 Cloud Console 或 BigQuery 傳統網頁版 UI 匯出資料時,無法選擇 GZIP 以外的其他壓縮類型。

位置注意事項

選擇資料的位置時,請考慮下列事項:

  • 將多個 Cloud Storage 值區並置於相同位置,以利匯出資料。
    • 當您匯出資料時,地區或多地區的 Cloud Storage 值區必須與 BigQuery 資料集位於相同位置。舉例來說,如果您的 BigQuery 資料集位在歐盟多地區位置,則包含匯出資料的 Cloud Storage 值區就必須位在歐盟的地區或多地區位置。
    • 如果您的資料集是位在地區位置,則您的 Cloud Storage 值區必須是相同位置的地區值區。舉例來說,如果您的資料集位於東京地區,則您的 Cloud Storage 值區必須是位於東京的地區值區。
    • 例外情況:如果您的資料集是位在美國多地區位置,則您可將資料匯出至任何地區或多地區位置的 Cloud Storage 值區裡。
  • 擬定資料管理方案。
    • 如果您選擇的是地區儲存資源,例如 BigQuery 資料集或 Cloud Storage 值區,則請擬定資料異地備援管理方案。

    如要進一步瞭解 Cloud Storage 位置,請參閱 Cloud Storage 說明文件中的值區位置

    在不同位置之間移動 BigQuery 資料

    資料集建立之後,就無法更改位置,但您可以建立該資料集的副本。您無法把資料集移動到另一個位置,但您可以手動移動 (重新建立) 資料集

    複製資料集

    如要查看複製資料集 (包括跨地區) 的步驟,請參閱複製資料集

    移動資料集

    如要手動將資料集移至其他位置,請按照下列流程操作:

    1. 從 BigQuery 資料表匯出資料至單一地區或多地區 Cloud Storage 值區,而且這個值區必須和資料集位於相同位置。舉例來說,如果您的資料集位於歐盟的多地區位置,您就必須把資料匯出到歐盟的單一地區或多地區值區。

      從 BigQuery 中匯出資料並不需要付費,但是在 Cloud Storage 儲存匯出的資料則會產生費用。BigQuery 匯出作業會受到匯出工作的相關限制。

    2. 從您的 Cloud Storage 值區中,將資料複製或移動至新位置的單一地區或多地區值區。舉例來說,如果您要將資料從美國多地區位置移到東京的單一地區位置,則必須把資料移轉到東京的地區值區。如要瞭解如何轉移 Cloud Storage 物件,請參閱 Cloud Storage 說明文件中的重新命名、複製及移動物件一文。

      請注意,在不同地區之間轉移資料將導致 Cloud Storage 產生網路輸出費用

    3. 將資料轉移至新位置的 Cloud Storage 值區後,請在新位置建立新的 BigQuery 資料集,然後將資料從 Cloud Storage 值區載入 BigQuery。

      將資料載入 BigQuery 無須支付費用,但將資料儲存於 Cloud Storage 則須付費,直到您刪除資料或值區為止。載入資料之後,將資料儲存至 BigQuery 亦須支付相關費用。將資料載入 BigQuery 時會受到載入工作的相關限制。

    如要進一步瞭解如何使用 Cloud Storage 來儲存及移動大型資料集,請參閱使用 Cloud Storage 處理大數據

    匯出格式與壓縮類型

    BigQuery 支援下列匯出資料用的資料格式與壓縮類型:

    資料格式 支援的壓縮類型 說明
    CSV GZIP

    您可以控制已匯出資料中的 CSV 分隔符號,方法是使用 --field_delimiter CLI 旗標,或是使用 configuration.extract.fieldDelimiter。擷取工作屬性。

    不支援巢狀與重複資料。

    JSON GZIP 支援巢狀與重複資料。
    Avro DEFLATE、SNAPPY

    Avro 不支援以 GZIP 格式匯出項目。

    支援巢狀與重複資料。

    匯出儲存在 BigQuery 的資料

    請透過下列方式匯出資料表的資料:

    • 使用 Cloud Console 或 BigQuery 傳統網頁版 UI
    • 使用 bq extract CLI 指令
    • 透過 API 或用戶端程式庫提交 extract 工作

    匯出資料表資料

    從 BigQuery 資料表匯出資料:

    主控台

    1. 在 Cloud Console 中開啟 BigQuery 網頁版 UI。
      前往 Cloud Console

    2. 在導覽面板的「Resources」(資源) 區段,展開您的專案並選取資料集。找出並點選包含匯出資料的資料表。

    3. 按一下視窗右側的 [Export] (匯出),然後選取 [Export to Cloud Storage] (匯出至 Cloud Storage)。

      匯出資料

    4. 在「Export to Cloud Storage」(匯出至 Cloud Storage) 對話方塊中:

      • 針對「Select Cloud Storage location」(選取 Cloud Storage 位置),請瀏覽至您要匯出資料的值區、資料夾或檔案。
      • 為「Export format」(匯出格式) 選擇以下其中一種匯出資料格式:[CSV]、[JSON (Newline Delimited)] (JSON (以換行符號分隔)) 或 [Avro]。
      • 針對「Compression」(壓縮選項),請接受預設值 None,或是選擇 GZIP。Avro 格式無法與 GZIP 壓縮類型搭配使用。如要壓縮 Avro 資料,請使用 bq 指令列工具或 API,然後指定支援壓縮 Avro 資料的類型之一:DEFLATESNAPPY
      • 按一下 [Export] (匯出) 以匯出資料表。

    如要查看工作進度,請查看「Export」(匯出) 工作的「Job history」(工作記錄) 導覽區頂端附近。

    傳統版 UI

    1. 前往 BigQuery 網路 UI。
      前往 BigQuery 網頁版 UI

    2. 在導覽窗格中,按一下要展開的資料集。

    3. 尋找您要匯出的資料所屬資料表旁的向下箭號圖示 向下箭號圖示圖片,然後按一下該圖示。

    4. 選取 [Export table] (匯出資料表) 以顯示「Export to Cloud Storage」(匯出至 Cloud Storage) 對話方塊。

    5. 在「Export to Cloud Storage」(匯出至 Cloud Storage) 對話方塊中:

      • 為「Export format」(匯出格式) 選擇以下其中一種匯出資料格式:[CSV]、[JSON (Newline Delimited)] (JSON (以換行符號分隔)) 或 [Avro]。
      • 針對「Compression」(壓縮選項),請接受預設值 None,或是選擇 GZIP。Avro 格式無法與 GZIP 壓縮類型搭配使用。如要壓縮 Avro 資料,請使用 bq 指令列工具或 API,然後指定支援壓縮 Avro 資料的類型之一:DEFLATESNAPPY
      • 在「Cloud Storage URI」文字方塊中,輸入採用 gs://bucket_name/filename.ext 格式的有效 URI,其中 bucket_name 是 Cloud Storage 值區的名稱,filename.ext 則是目的地檔案的名稱和副檔名。BigQuery 資料集與 Cloud Storage 值區必須位於相同的位置
      • 按一下 [OK] (確定),匯出資料表。

    當工作正在執行時,「(extracting)」會顯示在導覽區中資料表的名稱旁。如要查看工作進度,請在接近導覽窗格頂端的地方尋找「Extract」(擷取) 工作的「Job History」(工作記錄)

    CLI

    請使用 bq extract 指令,並加上 --destination_format 旗標。

    (選用) 提供 --location 旗標,並將值設為您的位置

    其他選用標記包括:

    • --compression:匯出檔案所用的壓縮類型。
    • --field_delimiter:匯出作業在採用 CSV 格式的輸出檔案中,用來表示不同資料欄之間界線的字元。\ttab 都可用來表示 Tab 字元分隔。
    • --print_header:如果有指定該旗標,系統在列印有標頭的格式 (例如 CSV) 時,就會列印標頭列。
    bq --location=location extract \
    --destination_format format \
    --compression compression_type \
    --field_delimiter delimiter \
    --print_header=boolean \
    project_id:dataset.table \
    gs://bucket/filename.ext
    

    其中:

    • location:您所在位置的名稱。--location 是選用旗標。舉例來說,如果您在東京地區使用 BigQuery,就可以將旗標的值設為 asia-northeast1。您可以使用 .bigqueryrc 檔案設定位置的預設值。
    • format:資料匯出格式:CSVNEWLINE_DELIMITED_JSONAVRO
    • compression_type:所選擇資料格式支援的壓縮類型。CSVNEWLINE_DELIMITED_JSON 支援 GZIP,而 AVRO 支援 DEFLATESNAPPY
    • delimiter:在 CSV 格式的匯出檔案中,用來指定不同資料欄之間界線的字元。\ttab 都是可接受的 Tab 分隔名稱。
    • booleantruefalse。設定為 true 時,如果資料格式支援標頭,系統在列印匯出的資料時就會列印標頭列。預設值為 true
    • project_id 是您的專案 ID。
    • dataset 是資料集名稱。
    • table 是您要匯出的資料表。
    • bucket 是資料匯出目標的 Cloud Storage 值區名稱。BigQuery 資料集與 Cloud Storage 值區必須位於相同的位置
    • filename.ext:匯出的資料檔案名稱和副檔名。您可以使用萬用字元,將資料匯出至多個檔案。

    範例:

    舉例來說,下列指令會把 mydataset.mytable 匯出成名為 myfile.csv 的 gzip 壓縮檔,而 myfile.csv 會儲存在名為 example-bucket 的 Cloud Storage 值區中。

    bq extract \
    --compression GZIP \
    'mydataset.mytable' \
    gs://example-bucket/myfile.csv
    

    預設目的地格式為 CSV。如要匯出為 JSON 或 Avro 格式,請使用 destination_format 旗標並將其設為 NEWLINE_DELIMITED_JSONAVRO。例如:

    bq extract \
    --destination_format NEWLINE_DELIMITED_JSON \
    'mydataset.mytable' \
    gs://example-bucket/myfile.json
    

    下列指令會把 mydataset.mytable 匯出成採用 Snappy 壓縮類型的 Avro 格式檔案,檔案名稱為 myfile.avro。而系統會把 myfile.avro 匯出到名為 example-bucket 的 Cloud Storage 值區。

    bq extract \
    --destination_format AVRO \
    --compression SNAPPY \
    'mydataset.mytable' \
    gs://example-bucket/myfile.avro
    

    API

    如要匯出資料,請建立 extract 工作,並填入工作設定。

    (選用) 請前往工作資源jobReference 區段,並在 location 屬性中指定您的位置。

    1. 建立指向 BigQuery 來源資料與 Cloud Storage 目的地的擷取工作。

    2. 指定來源資料表,方法是使用包含專案 ID、資料集 ID 和資料表 ID 的 sourceTable 設定物件。

    3. destination URI(s) 屬性必須是完整的,且格式為 gs://bucket/filename.ext。每個 URI 都可以包含一個「*」萬用字元,且必須出現在值區名稱之後。

    4. 設定 configuration.extract.destinationFormat 屬性以指定資料格式。舉例來說,如要匯出 JSON 檔案,請將此屬性值設為 NEWLINE_DELIMITED_JSON

    5. 如要查看工作狀態,請利用初始要求所傳回的工作 ID 來呼叫 jobs.get(job_id)

      • 如果 status.state = DONE,代表工作已順利完成。
      • 如果出現 status.errorResult 屬性,代表要求執行失敗,且該物件將包含所發生錯誤的相關訊息。
      • 如果沒有出現 status.errorResult,代表工作已順利完成,但過程中可能發生了幾個不嚴重的錯誤。不嚴重的錯誤都會列在已傳回工作物件的 status.errors 屬性中。

    API 附註:

    • 最佳做法就是產生唯一識別碼,並在呼叫 jobs.insert 來建立工作時,將該唯一識別碼當做 jobReference.jobId 傳送。這個方法較不受網路故障問題的影響,因為用戶端可對已知的工作 ID 進行輪詢或重試。

    • 針對指定的工作 ID 呼叫 jobs.insert 算是種冪等運算;換句話說,您可以針對同一個工作 ID 重試作業無數次,但在這些作業中最多只會有一個成功。

    C#

    在嘗試這個範例之前,請至 BigQuery 快速入門:使用用戶端程式庫,按照 C# 設定說明進行操作。 詳情請參閱 BigQuery C# API 參考說明文件

    
    using Google.Cloud.BigQuery.V2;
    using System;
    
    public class BigQueryExtractTable
    {
        public void ExtractTable(
            string projectId = "your-project-id",
            string bucketName = "your-bucket-name")
        {
            BigQueryClient client = BigQueryClient.Create(projectId);
            // Define a destination URI. Use a single wildcard URI if you think
            // your exported data will be larger than the 1 GB maximum value.
            string destinationUri = $"gs://{bucketName}/shakespeare-*.csv";
            BigQueryJob job = client.CreateExtractJob(
                projectId: "bigquery-public-data",
                datasetId: "samples",
                tableId: "shakespeare",
                destinationUri: destinationUri
            );
            job.PollUntilCompleted();  // Waits for the job to complete.
            Console.Write($"Exported table to {destinationUri}.");
        }
    }

    Go

    在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Go 設定操作說明來進行。詳情請參閱 BigQuery Go API 參考說明文件

    srcProject := "bigquery-public-data"
    srcDataset := "samples"
    srcTable := "shakespeare"
    
    // For example, gcsUri = "gs://mybucket/shakespeare.csv"
    gcsRef := bigquery.NewGCSReference(gcsURI)
    gcsRef.FieldDelimiter = ","
    
    extractor := client.DatasetInProject(srcProject, srcDataset).Table(srcTable).ExtractorTo(gcsRef)
    extractor.DisableHeader = true
    // You can choose to run the job in a specific location for more complex data locality scenarios.
    // Ex: In this example, source dataset and GCS bucket are in the US.
    extractor.Location = "US"
    
    job, err := extractor.Run(ctx)
    if err != nil {
    	return err
    }
    status, err := job.Wait(ctx)
    if err != nil {
    	return err
    }
    if err := status.Err(); err != nil {
    	return err
    }

    Java

    在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Java 設定操作說明來進行。詳情請參閱 BigQuery Java API 參考說明文件

    Job job = table.extract(format, gcsUrl);
    // Wait for the job to complete
    try {
      Job completedJob =
          job.waitFor(
              RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
              RetryOption.totalTimeout(Duration.ofMinutes(3)));
      if (completedJob != null && completedJob.getStatus().getError() == null) {
        // Job completed successfully
      } else {
        // Handle error case
      }
    } catch (InterruptedException e) {
      // Handle interrupted wait
    }

    Node.js

    在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Node.js 設定操作說明來進行。詳情請參閱 BigQuery Node.js API 參考說明文件

    // Import the Google Cloud client libraries
    const {BigQuery} = require('@google-cloud/bigquery');
    const {Storage} = require('@google-cloud/storage');
    
    const bigquery = new BigQuery();
    const storage = new Storage();
    
    async function extractTableToGCS() {
      // Exports my_dataset:my_table to gcs://my-bucket/my-file as raw CSV.
    
      /**
       * TODO(developer): Uncomment the following lines before running the sample.
       */
      // const datasetId = "my_dataset";
      // const tableId = "my_table";
      // const bucketName = "my-bucket";
      // const filename = "file.csv";
    
      // Location must match that of the source table.
      const options = {
        location: 'US',
      };
    
      // Export data from the table into a Google Cloud Storage file
      const [job] = await bigquery
        .dataset(datasetId)
        .table(tableId)
        .extract(storage.bucket(bucketName).file(filename), options);
      // load() waits for the job to finish
      console.log(`Job ${job.id} completed.`);
    
      // Check the job's status for errors
      const errors = job.status.errors;
      if (errors && errors.length > 0) {
        throw errors;
      }
    }

    PHP

    在嘗試這個範例之前,請至 BigQuery 快速入門:使用用戶端程式庫,按照 PHP 設定說明進行操作。 詳情請參閱 BigQuery PHP API 參考說明文件

    use Google\Cloud\BigQuery\BigQueryClient;
    
    /** Uncomment and populate these variables in your code */
    // $projectId  = 'The Google project ID';
    // $datasetId  = 'The BigQuery dataset ID';
    // $tableId    = 'The BigQuery table ID';
    // $bucketName = 'The Cloud Storage bucket Name';
    
    $bigQuery = new BigQueryClient([
        'projectId' => $projectId,
    ]);
    $dataset = $bigQuery->dataset($datasetId);
    $table = $dataset->table($tableId);
    $destinationUri = "gs://{$bucketName}/{$tableId}.json";
    // Define the format to use. If the format is not specified, 'CSV' will be used.
    $format = 'NEWLINE_DELIMITED_JSON';
    // Create the extract job
    $extractConfig = $table->extract($destinationUri)->destinationFormat($format);
    // Run the job
    $job = $table->runJob($extractConfig);  // Waits for the job to complete
    printf('Exported %s to %s' . PHP_EOL, $table->id(), $destinationUri);

    Python

    在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Python 設定操作說明來進行。詳情請參閱 BigQuery Python API 參考說明文件

    # from google.cloud import bigquery
    # client = bigquery.Client()
    # bucket_name = 'my-bucket'
    project = "bigquery-public-data"
    dataset_id = "samples"
    table_id = "shakespeare"
    
    destination_uri = "gs://{}/{}".format(bucket_name, "shakespeare.csv")
    dataset_ref = client.dataset(dataset_id, project=project)
    table_ref = dataset_ref.table(table_id)
    
    extract_job = client.extract_table(
        table_ref,
        destination_uri,
        # Location must match that of the source table.
        location="US",
    )  # API request
    extract_job.result()  # Waits for job to complete.
    
    print(
        "Exported {}:{}.{} to {}".format(project, dataset_id, table_id, destination_uri)
    )

    Ruby

    在嘗試此範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的操作說明設定 Ruby。 詳情請參閱 BigQuery Ruby API 參考說明文件

    require "google/cloud/bigquery"
    
    def extract_table(
        bucket_name = "my-bucket",
        dataset_id  = "my_dataset_id",
        table_id    = "my_table_id"
      )
      bigquery = Google::Cloud::Bigquery.new
      dataset  = bigquery.dataset dataset_id
      table    = dataset.table    table_id
    
      # Define a destination URI. Use a single wildcard URI if you think
      # your exported data will be larger than the 1 GB maximum value.
      destination_uri = "gs://#{bucket_name}/output-*.csv"
    
      extract_job = table.extract_job(destination_uri) do |config|
        # Location must match that of the source table.
        config.location = "US"
      end
      extract_job.wait_until_done!  # Waits for the job to complete
    
      puts "Exported #{table.id} to #{destination_uri}"
    end

    Avro 匯出詳細資料

    BigQuery 可以透過以下方式表示 Avro 格式的資料:

    • 結果匯出檔案是 Avro 容器檔案。
    • 每個 BigQuery 資料列都會表示為一筆 Avro 記錄。巢狀資料會以巢狀記錄物件來表示。
    • REQUIRED 欄位會表示為對應 Avro 類型。舉例來說,BigQuery 的 INTEGER 類型就會對應到 Avro 的 LONG 類型。
    • NULLABLE 欄位會表示為對應類型的 Avro Union 與「空值」。
    • REPEATED 欄位會表示為 Avro 陣列。
    • TIMESTAMP 資料類型會表示為 Avro LONG 類型。

    Avro 格式無法與 GZIP 壓縮搭配使用。如要壓縮 Avro 資料,請使用 bq 指令列工具或 API,然後指定支援壓縮 Avro 資料的類型之一:DEFLATESNAPPY

    將資料匯出為一或多個檔案

    destinationUris 屬性會指出 BigQuery 所匯出檔案的目標位置和檔案名稱。

    BigQuery 支援在每個 URI 中使用一個萬用字元運算子 (*)。該萬用字元可出現在 URI 中的任何位置,但不得做為值區名稱的一部分。使用萬用字元運算子就會指示 BigQuery 根據提供的模式建立多個資料分割檔案。萬用字元運算子會以數字取代 (從 0 開始),向左填補到到 12 位數。例如,在檔案名稱結尾處使用萬用字元的 URI 建立的檔案,會在第一個檔案結尾附加 000000000000,在第二個檔案結尾附加 000000000001,依此類推。

    下表說明 destinationUris 屬性的幾個可能選項:

    「destinationUris」選項
    單一 URI

    如果您要匯出的資料表資料大小沒有超過 1 GB,請使用單一 URI。這個選項是最常用的情況,因為匯出的資料一般會小於 1 GB 的上限值。

    屬性定義:

    ['gs://my-bucket/file-name.json']

    建立:

    
    gs://my-bucket/file-name.json
    單一萬用字元 URI

    如果您認為要匯出的資料會超過 1 GB 的上限值,請使用單一萬用字元 URI。BigQuery 會根據您提供的模式,將資料分割為多個檔案。匯出檔案的大小會有所差異。

    如果是在檔案名稱以外的 URI 元件中使用萬用字元,務必先確認該路徑元件不存在,再匯出資料。

    屬性定義:

    ['gs://my-bucket/file-name-*.json']

    建立:

    
    gs://my-bucket/file-name-000000000000.json
    gs://my-bucket/file-name-000000000001.json
    gs://my-bucket/file-name-000000000002.json
    ...
    多個萬用字元 URI

    如要分割匯出輸出,請使用多個萬用字元 URI。如果您要使用 Dataproc 這類服務執行平行處理工作,請使用這個選項。 確認有多少工作站可以處理工作,並為每個工作站建立一個 URI。BigQuery 會將每個 URI 位置當成一個分區處理,並使用平行處理,將每個位置的資料分割為多個檔案。假設每個 URI 都有一個萬用字元運算子,讓每個 URI 都不會重複,且 URI 的數量沒有超過配額政策,您就可以在檔案名稱中使用任何您想要的模式。

    當您傳送多個萬用字元 URI 時,BigQuery 會在每個分區的結尾建立一個特殊的檔案,代表檔案組合中的最後一個檔案。這個檔案名稱會指出 BigQuery 建立了多少個資料分割。

    舉例來說,如果您的萬用字元 URI 是 gs://my-bucket/file- name-<worker number>-*.json,而 BigQuery 建立了 80 個資料分割檔案,則零記錄檔案名稱就是 gs://my-bucket/file-name-<worker number>-000000000080.json。這個檔案名稱可讓您用來確認 BigQuery 已經建立了 80 個資料分割檔案 (名為 000000000000 至 000000000079)。

    請注意,根據資料格式而定 (例如當以含資料欄標頭的 CSV 格式匯出資料時),零記錄檔案可能包含 0 位元組以上。

    字串模式:

    gs://my-bucket/file-name-<worker number>-*.json

    屬性定義:

    
    ['gs://my-bucket/file-name-1-*.json',
    'gs://my-bucket/file-name-2-*.json',
    'gs://my-bucket/file-name-3-*.json']

    建立:

    下列範例假設 BigQuery 會在每個分區中建立 80 個資料分割檔案。

    
    gs://my-bucket/file-name-1-000000000000.json
    gs://my-bucket/file-name-1-000000000001.json
    ...
    gs://my-bucket/file-name-1-000000000080.json
    gs://my-bucket/file-name-2-000000000000.json
    gs://my-bucket/file-name-2-000000000001.json
    ...
    gs://my-bucket/file-name-2-000000000080.json
    gs://my-bucket/file-name-3-000000000000.json
    gs://my-bucket/file-name-3-000000000001.json
    ...
    gs://my-bucket/file-name-3-000000000080.json

    配額政策

    如要瞭解匯出工作配額,請參閱「配額與限制」頁面的匯出工作一節。

    定價

    我們目前不會向您收取從 BigQuery 匯出資料的費用,但匯出作業會受限於 BigQuery 的配額與限制。如要進一步瞭解 BigQuery 的計價方式,請參閱定價頁面。

    匯出資料之後,系統會因您在 Cloud Storage 中儲存資料而向您收取費用。如要進一步瞭解 Cloud Storage 的計價方式,請參閱 Cloud Storage 定價頁面。

    後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁