從 Cloud Storage 載入 CSV 資料

從 Cloud Storage 載入 CSV 檔案

從 Cloud Storage 載入 CSV 資料時,可將資料載入至新的資料表或分區、將資料附加到現有資料表或分區或覆寫現有資料表或分區。將資料載入至 BigQuery 時,資料會轉換為 Capacitor 列表型格式 (BigQuery 的儲存格式)。

將資料從 Cloud Storage 載入至 BigQuery 資料表時,包含該資料表的資料集必須位於與 Cloud Storage 值區相同的區域或多區域位置。

如需從本機檔案載入 CSV 資料的相關資訊,請參閱將資料從本機資料來源載入至 BigQuery

限制

若要將 CSV 資料從 Cloud Storage 載入至 BigQuery 資料表,請注意以下事項:

  • CSV 檔案不支援巢狀和重複的資料。
  • 如果您使用 gzip 壓縮,BigQuery 無法同時讀取資料。已壓縮的 CSV 資料載入至 BigQuery 的速度較未壓縮的資料慢。
  • 載入 CSV 或 JSON 資料時,DATE 資料欄中的值必須使用連字號 (-) 分隔符,且必須採用下列日期格式:YYYY-MM-DD (年-月-日)。
  • 載入 JSON 或 CSV 資料時,TIMESTAMP 欄中的值必須使用連字號 (-) 分隔符來區隔時間戳記的日期部分,且必須採用下列日期格式:YYYY-MM-DD (年-月-日)。時間戳記的 hh:mm:ss (時-分-秒) 部分必須使用冒號 (:) 分隔符。

CSV 編碼

BigQuery 需要的 CSV 資料格式為 UTF-8 編碼。如果您的 CSV 檔案包含以 ISO-8859-1 (也稱為 Latin-1) 格式編碼的資料,載入資料時必須確實指定編碼,資料才能轉換成 UTF-8。

CSV 檔案中的分隔符號可以是任何 ISO-8859-1 半形字元。如果要使用 128-255 範圍內的字元,必須將字元編碼為 UTF-8。BigQuery 會將字串轉換成 ISO-8859-1 編碼格式,並使用已編碼字串的第一個位元組來分割原始的二進位狀態資料。

所需權限

如果您要將資料載入至 BigQuery,您必須擁有專案或資料集層級的權限,才能將資料載入至新的或現有的 BigQuery 資料表與分區。如果是從 Cloud Storage 載入檔案,您還需要擁有包含您的資料的值區存取權。

BigQuery 權限

如果您要將資料從 Cloud Storage 載入至 BigQuery,您必須獲得專案層級或資料集層級的 bigquery.dataOwnerbigquery.dataEditor 角色授權。這兩種角色授予使用者與群組將資料載入至新資料表或將資料附加至現有資料表或覆寫現有資料表的權限。

授予專案層級的角色可讓使用者或群組有權將資料載入至專案中任何資料集的資料表。授予資料集層級的角色可讓使用者或群組只能將資料載入至該資料集的資料表。

如需設定資料集存取權的詳細資訊,請參閱控管資料集存取權。如要進一步瞭解 BigQuery 中的身分與存取權管理 (IAM) 角色,請參閱存取權控管

Cloud Storage 權限

若要從 Cloud Storage 值區載入資料,您必須被授予專案層級的 storage.objects.get 授權或該個別值區的授權。如要使用 URI 萬用字元,您也必須具備 storage.objects.list 權限。

授予預先定義的身分與存取權管理角色 storage.objectViewer,即可提供 storage.objects.getstorage.objects.list 權限。

將 CSV 資料載入至資料表

如要將 CSV 資料從 Cloud Storage 載入至新的 BigQuery 表格,或將資料附加至現有資料表:

主控台

  1. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。
    前往 BigQuery 網頁版 UI

  2. 在導覽面板的「Resources」(資源) 部分,展開您的專案並選取資料集。

  3. 在視窗右側的詳細資料面板中,按一下 [Create table] (建立資料表)。載入資料的程序與建立空白資料表的程序相同。

    查看資料集

  4. 在「Create table」(建立資料表) 頁面的「Source」(來源) 區段中:

    • 在「Create table from」(使用下列資料建立資料表) 部分,選取您要採用的來源類型。

      查看資料集

    • 在「Source」(來源) 欄位中,瀏覽檔案/Cloud Storage 值區,或輸入 Cloud Storage URI。請注意,您無法在 BigQuery 網頁版 UI 中輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與要建立的表格所在的資料集位置相同。

      查看資料集

    • 針對「File format」(檔案格式) 選取 [CSV]

  5. 在「Create table」(建立資料表) 頁面的「Destination」(目的地) 區段中:

    • 在「Dataset name」(資料集名稱) 部分選擇適當的資料集。

      查看資料集

    • 在「Table name」(資料表名稱) 欄位中,輸入您在 BigQuery 中建立資料表時使用的名稱。

    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)

  6. 在「Schema」(結構定義) 區段中,輸入結構定義。

    • 透過以下方式,手動輸入結構定義資訊:

      • 啟用 [Edit as text] (以文字形式編輯),然後以 JSON 陣列的形式輸入資料表結構定義:

      • 使用 [Add Field] (新增欄位) 手動輸入結構定義。

  7. 在「Advanced options」(進階選項) 區段中選取適合的項目,然後按一下 [Create table] (建立資料表)。如需可用選項的相關資訊,請參閱 CSV 選項

傳統版 UI

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

  2. 在導覽面板中,將滑鼠游標懸停在資料集上,然後依序點選向下箭號圖示 向下箭號圖示圖片 > [Create new table] (建立新資料表)。載入資料的程序與建立空白資料表的程序相同。

  3. 在「Create Table」頁面的「Source Data」區段中:

    • 在「Location」(位置) 中,選取 [Cloud Storage],然後在「Source」(來源) 欄位輸入 Cloud Storage URI。請注意,您無法在 BigQuery 網頁版 UI 輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與要建立的資料表所在的資料集位置相同。
    • 在「File format」(檔案格式) 選取「Comma-separated values (CSV)」(逗號分隔值)
  4. 在「Create Table」(建立資料表) 頁面的「Destination Table」(目標資料表) 部分中:

    • 在「Table name」(表格名稱) 部分選擇適當的資料集,然後在表格名稱欄位中,輸入要在 BigQuery 中建立的表格名稱。
    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)
  5. 在「Schema」(結構定義) 區段中,輸入結構定義。

    • 透過以下方式,手動輸入結構定義資訊:

      • 按一下 [Edit as text] (以文字形式編輯),然後以 JSON 陣列的形式輸入資料表結構定義:

        以 JSON 陣列的形式新增結構定義

      • 使用 [Add Field] 手動輸入結構定義:

        使用新增欄位新增結構定義

  6. 在「選項」區段中選取適合的項目,然後按一下 [建立表格]。如需可用選項的相關資訊,請參閱 CSV 選項

指令列

使用 bq load 指令將 CSV 指定為 source_format,並加入一個 Cloud Storage URI。您可以加入單一 URI、逗號分隔的 URI 清單或含有萬用字元的 URI。

提供 --location 標記,並將值設為您的位置

bq --location=[LOCATION] load --source_format=[FORMAT] [DATASET].[TABLE] [PATH_TO_SOURCE] [SCHEMA]

其中:

  • [LOCATION] 是您的位置。--location 是選用標記。例如,如果您在東京地區使用 BigQuery,請將標記的值設為 asia-northeast1。您可以使用 .bigqueryrc 檔案設定位置的預設值。
  • [FORMAT] 是 CSV。
  • [DATASET] 是現有資料集。
  • [TABLE] 是您正在載入資料的資料表名稱。
  • [PATH_TO_SOURCE] 是完全合格的 Cloud Storage URI 或逗號分隔的 URI 清單。您也可以使用萬用字元
  • [SCHEMA] 是有效的結構定義。結構定義可以是本機 JSON 檔案,或可內嵌為指令的一部分。您也可以改用 --autodetect 標記而不提供結構定義。

此外,您還可以為 CSV 選項新增標記,以控制 BigQuery 剖析資料的方式。例如,您可以使用 --skip_leading_rows 標記以忽略 CSV 檔案中的標題列,也可使用 --encoding 標記以辨識資料的字元編碼。

範例:

  • 下列指令會將 gs://mybucket/mydata.csv 中的資料載入至 mydataset 中名為 mytable 的資料表。結構定義是定義於名為 myschema.json 的本機結構定義檔案中。mybucketmydataset 建立於 US 多區域位置。

    bq --location=US load --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json
    
  • 下列指令會將 gs://mybucket/mydata.csv 中的資料載入至 mydataset 中名為 mytable 的資料表。結構定義以下列格式內嵌:[FIELD]:[DATA_TYPE], [FIELD]:[DATA_TYPE]mybucketmydataset 建立於 US 多區域位置。

    bq --location=US load --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv qtr:STRING,sales:FLOAT,year:STRING
    

    在指令列中指定結構定義時,不能包含 RECORD (STRUCT) 類型和欄位說明,也不能指定欄位模式。所有欄位模式均預設為 NULLABLE。如要加入欄位說明、模式和 RECORD 類型,請提供 JSON 結構定義檔案

  • 下列指令會將 gs://mybucket/mydata.csv 中的資料載入至 mydataset 中名為 mytable 的資料表。結構定義是定義於名為 myschema.json 的本機結構定義檔案中,並使用 --skip_leading_rows 標記以忽略 CSV 檔案中的前兩個標題列。mybucketmydataset 建立於 asia-northeast1 區域。

    bq --location=asia-northeast1 load --skip_leading_rows=2 --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json
    

API

設定下列屬性以使用 API 載入 CSV 資料。

  1. 建立指向 Cloud Storage 中來源資料的載入工作

  2. 工作資源jobReference 區段中,於 location 屬性指定您的位置

  3. 來源 URI 必須完整且符合下列格式:gs://[BUCKET]/[OBJECT]。每個 URI 可包含一個「*」萬用字元

  4. configuration.load.sourceFormat 屬性設為 CSV,以指定 CSV 資料格式。

  5. 如果要檢查工作狀態,請呼叫 jobs.get([JOB_ID]*),其中 [JOB_ID] 是初始要求傳回的工作 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 BigQueryLoadTableGcsCsv
{
    public void LoadTableGcsCsv(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        var gcsURI = "gs://cloud-samples-data/bigquery/us-states/us-states.csv";
        var dataset = client.GetDataset(datasetId);
        var schema = new TableSchemaBuilder {
            { "name", BigQueryDbType.String },
            { "post_abbr", BigQueryDbType.String }
        }.Build();
        var destinationTableRef = dataset.GetTableReference(
            tableId: "us_states");
        // Create job configuration
        var jobOptions = new CreateLoadJobOptions()
        {
            // The source format defaults to CSV; line below is optional.
            SourceFormat = FileFormat.Csv,
            SkipLeadingRows = 1
        };
        // Create and run job
        var loadJob = client.CreateLoadJob(
            sourceUri: gcsURI, destination: destinationTableRef,
            schema: schema, options: jobOptions);
        loadJob.PollUntilCompleted();  // Waits for the job to complete.
        // Display the number of rows uploaded
        BigQueryTable table = client.GetTable(destinationTableRef);
        Console.WriteLine(
            $"Loaded {table.Resource.NumRows} rows to {table.FullyQualifiedId}");
    }
}

Go

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
gcsRef := bigquery.NewGCSReference("gs://cloud-samples-data/bigquery/us-states/us-states.csv")
gcsRef.SkipLeadingRows = 1
gcsRef.Schema = bigquery.Schema{
	{Name: "name", Type: bigquery.StringFieldType},
	{Name: "post_abbr", Type: bigquery.StringFieldType},
}
loader := client.Dataset(datasetID).Table(tableID).LoaderFrom(gcsRef)
loader.WriteDisposition = bigquery.WriteEmpty

job, err := loader.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}

if status.Err() != nil {
	return fmt.Errorf("Job completed with error: %v", status.Err())
}

Java

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Java 設定說明進行操作。詳情請參閱 BigQuery Java API 參考說明文件

Job job = table.load(FormatOptions.csv(), sourceUri);
// 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');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const datasetId = "my_dataset";
// const tableId = "my_table";

/**
 * This sample loads the CSV file at
 * https://storage.googleapis.com/cloud-samples-data/bigquery/us-states/us-states.csv
 *
 * TODO(developer): Replace the following lines with the path to your file.
 */
const bucketName = 'cloud-samples-data';
const filename = 'bigquery/us-states/us-states.csv';

async function loadCSVFromGCS() {
  // Imports a GCS file into a table with manually defined schema.

  // Instantiate clients
  const bigqueryClient = new BigQuery();
  const storageClient = new Storage();

  // Configure the load job. For full list of options, see:
  // https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load
  const metadata = {
    sourceFormat: 'CSV',
    skipLeadingRows: 1,
    schema: {
      fields: [
        {name: 'name', type: 'STRING'},
        {name: 'post_abbr', type: 'STRING'},
      ],
    },
    location: 'US',
  };

  // Load data from a Google Cloud Storage file into the table
  const [job] = await bigqueryClient
    .dataset(datasetId)
    .table(tableId)
    .load(storageClient.bucket(bucketName).file(filename), metadata);

  // 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;
  }
}
loadCSVFromGCS();

PHP

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

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';
// $datasetId  = 'The BigQuery dataset ID';

// instantiate the bigquery table service
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table('us_states');

// create the import job
$gcsUri = 'gs://cloud-samples-data/bigquery/us-states/us-states.csv';
$schema = [
    'fields' => [
        ['name' => 'name', 'type' => 'string'],
        ['name' => 'post_abbr', 'type' => 'string']
    ]
];
$loadConfig = $table->loadFromStorage($gcsUri)->schema($schema)->skipLeadingRows(1);
$job = $table->runJob($loadConfig);
// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Data imported successfully' . PHP_EOL);
}

Python

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

使用 Client.load_table_from_uri() 方法,從 Cloud Storage 的 CSV 檔案載入資料。將 LoadJobConfig.schema 屬性設為 SchemaField 物件清單,以提供明確的結構定義。

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'

dataset_ref = client.dataset(dataset_id)
job_config = bigquery.LoadJobConfig()
job_config.schema = [
    bigquery.SchemaField("name", "STRING"),
    bigquery.SchemaField("post_abbr", "STRING"),
]
job_config.skip_leading_rows = 1
# The source format defaults to CSV, so the line below is optional.
job_config.source_format = bigquery.SourceFormat.CSV
uri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"

load_job = client.load_table_from_uri(
    uri, dataset_ref.table("us_states"), job_config=job_config
)  # API request
print("Starting job {}".format(load_job.job_id))

load_job.result()  # Waits for table load to complete.
print("Job finished.")

destination_table = client.get_table(dataset_ref.table("us_states"))
print("Loaded {} rows.".format(destination_table.num_rows))

Ruby

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

require "google/cloud/bigquery"

def load_table_gcs_csv dataset_id = "your_dataset_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  gcs_uri  = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"
  table_id = "us_states"

  load_job = dataset.load_job table_id, gcs_uri, skip_leading: 1 do |schema|
    schema.string "name"
    schema.string "post_abbr"
  end
  puts "Starting job #{load_job.job_id}"

  load_job.wait_until_done!  # Waits for table load to complete.
  puts "Job finished."

  table = dataset.table(table_id)
  puts "Loaded #{table.rows_count} rows to table #{table.id}"
end

透過結構定義自動偵測功能載入 CSV 資料

主控台

  1. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。
    前往 BigQuery 網頁版 UI

  2. 在導覽面板的「Resources」(資源) 部分,展開您的專案並選取資料集。

  3. 在視窗右側的詳細資料面板中,按一下 [Create table] (建立資料表)。載入資料的程序與建立空白資料表的程序相同。

    查看資料集

  4. 在「Create table」(建立資料表) 頁面的「Source」(來源) 區段中:

    • 在「Create table from」(使用下列資料建立資料表) 部分,選取您要採用的來源類型。

      查看資料集

    • 在「Source」(來源) 欄位中,瀏覽檔案/Cloud Storage 值區,或輸入 Cloud Storage URI。請注意,您無法在 BigQuery 網頁版 UI 中輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與要建立的表格所在的資料集位置相同。

      查看資料集

    • 針對「File format」(檔案格式) 選取 [CSV]

  5. 在「Create table」(建立資料表) 頁面的「Destination」(目的地) 區段中:

    • 在「Dataset name」(資料集名稱) 部分選擇適當的資料集。

      查看資料集

    • 在「Table name」(資料表名稱) 欄位中,輸入您在 BigQuery 中建立資料表時使用的名稱。

    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)

  6. 在「Schema」(結構定義) 區段的「Auto-detect」(自動偵測) 底下,勾選 [Schema and input parameters] (結構定義和輸入參數) 核取方塊,以啟用結構定義自動偵測功能。

    自動偵測連結

  7. 在「Advanced options」(進階選項) 區段中選取適合的項目,然後按一下 [Create table] (建立資料表)。如需可用選項的相關資訊,請參閱 CSV 選項

傳統版 UI

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

  2. 在導覽面板中,將滑鼠游標懸停在資料集上,然後依序點選向下箭號圖示 向下箭號圖示圖片 > [Create new table] (建立新資料表)。載入資料的程序與建立空白資料表的程序相同。

  3. 在「Create Table」(建立資料表) 頁面的「Source Data」(來源資料) 區段中:

    • 在「Location」(位置) 中,選取 [Cloud Storage],然後在「Source」(來源) 欄位輸入 Cloud Storage URI。請注意,您無法在 BigQuery 網頁版 UI 輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與要建立的表格所在的資料集位置相同。
    • 在「File format」(檔案格式) 選取「Comma-separated values (CSV)」(逗號分隔值)
  4. 在「Create Table」(建立資料表) 頁面的「Destination Table」(目標資料表) 部分中:

    • 在「Table name」(表格名稱) 部分選擇適當的資料集,然後在表格名稱欄位中,輸入要在 BigQuery 中建立的表格名稱。
    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)
  5. 在「Schema」(結構定義) 區段中,勾選 [Auto-detect] (自動偵測) 選項以啟用結構定義自動偵測功能。

    自動偵測連結

  6. 在「Options」(選項) 區段中選取適合的項目,然後按一下 [Create Table] (建立資料表)。如需可用選項的相關資訊,請參閱 CSV 選項

指令列

使用 bq load 指令將 CSV 指定為 source_format,並加入一個 Cloud Storage URI。您可以加入單一 URI、逗號分隔的 URI 清單或含有萬用字元的 URI。

提供 --location 標記,並將值設為您的位置

bq --location=[LOCATION] load --autodetect --source_format=[FORMAT] [DATASET].[TABLE] [PATH_TO_SOURCE]

其中:

  • [LOCATION] 是您的位置。--location 是選用標記。舉例來說,如果您是在東京地區使用 BigQuery,可將標記的值設為 asia-northeast1。您可以使用 .bigqueryrc 檔案設定位置的預設值。
  • --autodetect 標記可啟用結構定義自動偵測。
  • [FORMAT] 是 CSV。
  • [DATASET] 是現有資料集。
  • [TABLE] 是您正在載入資料的資料表名稱。
  • [PATH_TO_SOURCE] 是完全合格的 Cloud Storage URI 或逗號分隔的 URI 清單。您也可以使用萬用字元

此外,您還可以為 CSV 選項新增標記,以控制 BigQuery 剖析資料的方式。例如,您可以使用 --skip_leading_rows 標記以忽略 CSV 檔案中的標題列,也可使用 --encoding 標記以辨識資料的字元編碼。

範例:

  • 下列指令會將 gs://mybucket/mydata.csv 中的資料載入至 mydataset 中名為 mytable 的資料表。結構定義是使用結構定義自動偵測定義的。 mybucketmydataset 建立於 US 多區域位置。

    bq --location=US load --autodetect --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv
    
  • 下列指令會將 gs://mybucket/ 中多個檔案的資料載入至 mydataset 中名為 mytable 的資料表。Cloud Storage URI 使用萬用字元,結構定義是使用結構定義自動偵測定義的。 mybucketmydataset 建立於 asia-northeast1 區域。

    bq --location=asia-northeast1 load --autodetect --source_format=CSV mydataset.mytable gs://mybucket/mydata*.csv
    
  • 下列指令會將 gs://mybucket/ 中多個檔案的資料載入至 mydataset 中名為 mytable 的資料表。指令包含逗號分隔的 Cloud Storage URI 清單,結構定義是使用結構定義自動偵測定義的。 mybucketmydataset 是在 asia-northeast1 區域中建立的。

    bq --location=asia-northeast1 load --autodetect --source_format=CSV mydataset.mytable "gs://mybucket/myfile.csv,gs://mybucket/myfile2.csv"
    

API

設定下列屬性以使用 API 載入 CSV 資料。

  1. 建立指向 Cloud Storage 中來源資料的載入工作

  2. 工作資源jobReference 區段中,於 location 屬性指定您的位置

  3. 來源 URI 必須完整且符合下列格式:gs://[BUCKET]/[OBJECT]。每個 URI 可包含一個「*」萬用字元

  4. configuration.load.sourceFormat 屬性設為 CSV,以指定 CSV 資料格式。

  5. 如果要檢查工作狀態,請呼叫 jobs.get([JOB_ID]*),其中 [JOB_ID] 是初始要求傳回的工作 ID。

    • 出現 status.state = DONE,表示工作順利完成。
    • 出現 status.errorResult 屬性表示要求失敗,且該物件會包含描述問題的資訊。要求若失敗,則不會建立任何資料表,也不會新增任何資料。
    • 未出現 status.errorResult 表示工作成功完成,但可能有一些不嚴重的錯誤,例如匯入一些資料列時發生問題。不嚴重的錯誤會列在傳回的工作物件的 status.errors 屬性中。

API 附註:

  • 載入工作是整體一致的,如果載入工作失敗,則所有資料都無法使用;如果載入工作成功,則所有資料都可以使用。

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

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

Go

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

gcsRef := bigquery.NewGCSReference("gs://cloud-samples-data/bigquery/us-states/us-states.csv")
gcsRef.SourceFormat = bigquery.CSV
gcsRef.AutoDetect = true
gcsRef.SkipLeadingRows = 1
loader := client.Dataset(datasetID).Table(tableID).LoaderFrom(gcsRef)

job, err := loader.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}

if status.Err() != nil {
	return fmt.Errorf("job completed with error: %v", status.Err())
}

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');

/**
 * TODO(developer): Uncomment the following lines before running the sample
 */
// const datasetId = "my_dataset";
// const tableId = "my_table";

/**
 * This sample loads the CSV file at
 * https://storage.googleapis.com/cloud-samples-data/bigquery/us-states/us-states.csv
 *
 * TODO(developer): Replace the following lines with the path to your file
 */
const bucketName = 'cloud-samples-data';
const filename = 'bigquery/us-states/us-states.csv';

async function loadCSVFromGCSAutodetect() {
  // Imports a GCS file into a table with autodetected schema.

  // Instantiate clients
  const bigqueryClient = new BigQuery();
  const storageClient = new Storage();

  // Configure the load job. For full list of options, see:
  // https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load
  const metadata = {
    sourceFormat: 'CSV',
    skipLeadingRows: 1,
    autodetect: true,
    location: 'US',
  };

  // Load data from a Google Cloud Storage file into the table
  const [job] = await bigqueryClient
    .dataset(datasetId)
    .table(tableId)
    .load(storageClient.bucket(bucketName).file(filename), metadata);
  // 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;
  }
}
loadCSVFromGCSAutodetect();

PHP

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

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';
// $datasetId  = 'The BigQuery dataset ID';

// instantiate the bigquery table service
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table('us_states');

// create the import job
$gcsUri = 'gs://cloud-samples-data/bigquery/us-states/us-states.csv';
$loadConfig = $table->loadFromStorage($gcsUri)->autodetect(true)->skipLeadingRows(1);
$job = $table->runJob($loadConfig);
// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Data imported successfully' . PHP_EOL);
}

Python

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

LoadJobConfig.autodetect 屬性設為 True,BigQuery 就會從輸入資料的範例推測結構定義:

# from google.cloud import bigquery
# client = bigquery.Client()
# dataset_id = 'my_dataset'

dataset_ref = client.dataset(dataset_id)
job_config = bigquery.LoadJobConfig()
job_config.autodetect = True
job_config.skip_leading_rows = 1
# The source format defaults to CSV, so the line below is optional.
job_config.source_format = bigquery.SourceFormat.CSV
uri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"
load_job = client.load_table_from_uri(
    uri, dataset_ref.table("us_states"), job_config=job_config
)  # API request
print("Starting job {}".format(load_job.job_id))

load_job.result()  # Waits for table load to complete.
print("Job finished.")

destination_table = client.get_table(dataset_ref.table("us_states"))
print("Loaded {} rows.".format(destination_table.num_rows))

使用 CSV 資料覆寫資料表

如果要將額外的資料載入至資料表,您可以指定來源檔案或附加查詢結果。如果資料的結構定義與目標資料表或分區的結構定義不符,您可以在附加或覆寫時更新目標資料表或分區的結構定義。

如果您在附加資料時更新結構定義,BigQuery 可讓您:

  • 新增欄位
  • REQUIRED 欄位放寬為 NULLABLE

如果是覆寫資料表,系統一律會覆寫結構定義。覆寫表格時,結構定義更新不受限制。

在主控台或傳統版 BigQuery 網頁版 UI 中,使用 [Write preference] (寫入偏好設定) 選項來指定從來源檔案或從查詢結果載入資料時採取的動作。CLI 與 API 提供下列選項:

主控台選項 傳統版 UI 選項 CLI 標記 BigQuery API 屬性 說明
空白時寫入 空白時寫入 WRITE_EMPTY 資料表空白時才會寫入資料。
附加到表格中 附加到表格中 --noreplace--replace=false;如果未指定 --[no]replace,預設動作為附加 WRITE_APPEND (預設值) 將資料附加至資料表尾端。
覆寫資料表 覆寫資料表 --replace--replace=true WRITE_TRUNCATE 清除資料表中所有現有的資料後再寫入新資料。

根據預設,除非更改寫入配置方式,否則載入工作會將資料附加至資料表。如果您想將資料換成載入工作中的資料,可以選擇覆寫 BigQuery 表格中的資料:

主控台

  1. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。
    前往 BigQuery 網頁版 UI

  2. 在導覽面板的「Resources」(資源) 部分,展開您的專案並選取資料集。

  3. 在視窗右側的詳細資料面板中,按一下 [Create table] (建立資料表)。載入資料的程序與建立空白資料表的程序相同。

    建立資料表

  4. 在「Create table」(建立資料表) 頁面的「Source」(來源) 區段中:

    • 在「Create table from」(使用下列資料建立資料表) 部分,選取您要採用的來源類型。

      建立資料表來源

    • 在「Source」(來源) 欄位中,瀏覽檔案/Cloud Storage 值區,或輸入 Cloud Storage URI。請注意,您無法在 BigQuery 網頁版 UI 中輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與要建立的表格所在的資料集位置相同。

      選取檔案

    • 針對「File format」(檔案格式) 選取 [CSV]

  5. 在「Create table」(建立資料表) 頁面的「Destination」(目的地) 區段中:

    • 在「Dataset name」(資料集名稱) 部分選擇適當的資料集。

      選取資料集

    • 在「Table name」(資料表名稱) 欄位中,輸入您在 BigQuery 中建立資料表時使用的名稱。

    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)

  6. 在「Schema」(結構定義) 區段中,輸入結構定義。

    • 透過以下方式,手動輸入結構定義資訊:

      • 啟用 [Edit as text] (以文字形式編輯),然後以 JSON 陣列的形式輸入資料表結構定義:

      • 使用 [Add Field] (新增欄位) 手動輸入結構定義。

  7. 在「Advance options」(進階選項) 部分的「Write preference」(寫入偏好設定),選擇 [Write if empty] (空白時寫入)、[Append to table] (附加到表格中) 或是 [Overwrite table] (覆寫資料表)

    查看資料集

  8. 按一下 [Create table] (建立資料表)

傳統版 UI

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

  2. 在導覽面板中,將滑鼠游標懸停在資料集上,然後依序點選向下箭號圖示 向下箭號圖示圖片 > [Create new table] (建立新資料表)。載入資料的程序與建立空白資料表的程序相同。

  3. 在「Create Table」頁面的「Source Data」區段中:

    • 在「Location」(位置) 中,選取 [Cloud Storage],然後在「Source」(來源) 欄位輸入 Cloud Storage URI。請注意,您無法在 UI 輸入多個 URI,但可以使用萬用字元。Cloud Storage 值區的位置必須與您要附加或覆寫的資料表所在的資料集位置相同。
    • 在「File format」(檔案格式) 選取「Comma-separated values (CSV)」(逗號分隔值)
  4. 在「Create Table」(建立資料表) 頁面的「Destination Table」(目標資料表) 部分中:

    • 在「Table name」(表格名稱) 部分選擇適當的資料集,然後在表格名稱欄位中輸入要附加或覆寫的表格名稱。
    • 確認「Table type」(資料表類型) 設為「Native table」(原生資料表)
  5. 在「Schema」(結構定義) 區段中,輸入結構定義。

    • 如為 CSV 檔案,您可以勾選 [Auto-detect] (自動偵測) 選項以啟用結構定義自動偵測

      自動偵測連結

    • 您也可以使用下列任一種方式,手動輸入結構定義資訊:

      • 按一下 [Edit as text] (以文字形式編輯),然後以 JSON 陣列的形式輸入資料表結構定義:

        以 JSON 陣列的形式新增結構定義

      • 使用 [Add Field] 手動輸入結構定義:

        使用新增欄位新增結構定義

  6. 在「Options」區段的「Write preference」中,選擇 [Write if empty]、[Append to table] 或 [Overwrite table]

    使用新增欄位新增結構定義

  7. 按一下 [建立表格]

指令列

輸入 bq load 指令並搭配使用 --replace 標記覆寫資料表。提供 --location 標記,並將值設為您的位置。使用 --noreplace 標記將資料附加至資料表。未指定任何標記時,預設值為附加資料。

附加或覆寫資料表時,您可以使用 --schema_update_option 標記來將目標資料表的結構定義更新為新資料的結構定義。下列選項可搭配 --schema_update_option 標記使用:

  • ALLOW_FIELD_ADDITION:新增欄位至結構定義;新欄位不得為 REQUIRED
  • ALLOW_FIELD_RELAXATION:將必填欄位放寬為可以為空值;重複此選項可指定值清單
bq --location=[LOCATION] load --[no]replace [DATASET].[TABLE] [PATH_TO_SOURCE] [SCHEMA]

其中:

  • [LOCATION] 是您的位置--location 是選用標記。您可以使用 .bigqueryrc 檔案來設定位置的預設值。
  • [DATASET] 是現有資料集。
  • [TABLE] 是您正在載入資料的資料表名稱。
  • [PATH_TO_SOURCE] 是完全合格的 Cloud Storage URI 或逗號分隔的 URI 清單。您也可以使用萬用字元
  • [SCHEMA] 是有效的結構定義。結構定義可以是本機 JSON 檔案,或可內嵌為指令的一部分。您也可以改用 --autodetect 標記而不提供結構定義。

此外,您還可以為 CSV 選項新增標記,以控制 BigQuery 剖析 CSV 資料的方式。例如,您可以使用 --skip_leading_rows 標記以忽略 CSV 檔案中的標題列,也可使用 --encoding 標記以辨識資料的字元編碼。

範例:

  • 下列指令會載入 gs://mybucket/mydata.csv 中的資料,並覆寫 mydataset 中名為 mytable 的資料表。系統將透過結構定義自動偵測功能來指定結構定義。mybucketmydataset 均建立於 US 多地區位置。

    bq --location=US load --autodetect --replace --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv
    
  • 下列指令會載入 gs://mybucket/mydata.csv 中的資料,並將資料附加至 mydataset 中名為 mytable 的資料表。結構定義是使用 JSON 結構定義檔案 myschema.json 定義的,mybucketmydataset 建立於 US 多區域位置。

    bq --location=US load --autodetect --noreplace --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json
    
  • 下列指令會載入 gs://mybucket/mydata.csv 中的資料,並將資料附加至 mydataset 中名為 mytable 的資料表。使用了名為 myschema.json 的本機 JSON 結構定義檔案。結構定義包含目標資料表中沒有的新欄位。mybucketmydataset 建立於 asia-northeast1 區域。

    bq --location=asia-northeast1 load --noreplace --schema_update_option=ALLOW_FIELD_ADDITION --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json
    
  • 下列指令會載入 gs://mybucket/mydata.csv 中的資料,並將資料附加至 mydataset 中名為 mytable 的資料表。使用了名為 myschema.json 的本機 JSON 結構定義檔案。結構定義將兩個 REQUIRED 欄位變更 (放寬) 為 NULLABLEmybucketmydataset 建立於 asia-northeast1 地區。

    bq --location=asia-northeast1 load --noreplace --schema_update_option=ALLOW_FIELD_RELAXATION --source_format=CSV mydataset.mytable gs://mybucket/mydata.csv ./myschema.json
    

API

設定下列屬性以使用 API 載入 CSV 資料。

  1. 建立指向 Cloud Storage 中來源資料的載入工作

  2. 工作資源jobReference 區段中,於 location 屬性指定您的位置

  3. 來源 URI 必須完整且符合下列格式:gs://[BUCKET]/[OBJECT]。您可以使用逗號分隔清單的形式包含多個 URI。請注意,從 Cloud Storage 載入 CSV 資料時,也可以使用萬用字元

  4. configuration.load.sourceFormat 屬性設為 CSV,以指定資料格式。

  5. configuration.load.writeDisposition 屬性設為 WRITE_TRUNCATEWRITE_APPENDWRITE_EMPTY,以指定寫入偏好設定。

  6. 如要在載入工作中更新結構定義,請將 configuration.load.schemaUpdateOptions 屬性設為 ALLOW_FIELD_ADDITIONALLOW_FIELD_RELAXATION

Go

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
gcsRef := bigquery.NewGCSReference("gs://cloud-samples-data/bigquery/us-states/us-states.csv")
gcsRef.SourceFormat = bigquery.CSV
gcsRef.AutoDetect = true
gcsRef.SkipLeadingRows = 1
loader := client.Dataset(datasetID).Table(tableID).LoaderFrom(gcsRef)
loader.WriteDisposition = bigquery.WriteTruncate

job, err := loader.Run(ctx)
if err != nil {
	return err
}
status, err := job.Wait(ctx)
if err != nil {
	return err
}

if status.Err() != nil {
	return fmt.Errorf("job completed with error: %v", status.Err())
}

Node.js

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

如要取代現有資料表中的列,請將 metadata 參數中的 writeDisposition 值設為 'WRITE_TRUNCATE'

// Import the Google Cloud client libraries
const {BigQuery} = require('@google-cloud/bigquery');
const {Storage} = require('@google-cloud/storage');

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const datasetId = "my_dataset";
// const tableId = "my_table";

/**
 * This sample loads the CSV file at
 * https://storage.googleapis.com/cloud-samples-data/bigquery/us-states/us-states.csv
 *
 * TODO(developer): Replace the following lines with the path to your file.
 */
const bucketName = 'cloud-samples-data';
const filename = 'bigquery/us-states/us-states.csv';

async function loadCSVFromGCSTruncate() {
  /**
   * Imports a GCS file into a table and overwrites
   * table data if table already exists.
   */

  // Instantiate clients
  const bigqueryClient = new BigQuery();
  const storageClient = new Storage();

  // Configure the load job. For full list of options, see:
  // https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs#configuration.load
  const metadata = {
    sourceFormat: 'CSV',
    skipLeadingRows: 1,
    schema: {
      fields: [
        {name: 'name', type: 'STRING'},
        {name: 'post_abbr', type: 'STRING'},
      ],
    },
    // Set the write disposition to overwrite existing table data.
    writeDisposition: 'WRITE_TRUNCATE',
    location: 'US',
  };

  // Load data from a Google Cloud Storage file into the table
  const [job] = await bigqueryClient
    .dataset(datasetId)
    .table(tableId)
    .load(storageClient.bucket(bucketName).file(filename), metadata);
  // 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;
  }
}
loadCSVFromGCSTruncate();

PHP

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

use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';

// instantiate the bigquery table service
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$table = $bigQuery->dataset($datasetId)->table($tableId);

// create the import job
$gcsUri = 'gs://cloud-samples-data/bigquery/us-states/us-states.csv';
$loadConfig = $table->loadFromStorage($gcsUri)->skipLeadingRows(1)->writeDisposition('WRITE_TRUNCATE');
$job = $table->runJob($loadConfig);

// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
    print('Waiting for job to complete' . PHP_EOL);
    $job->reload();
    if (!$job->isComplete()) {
        throw new Exception('Job has not yet completed', 500);
    }
});

// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
    $error = $job->info()['status']['errorResult']['message'];
    printf('Error running job: %s' . PHP_EOL, $error);
} else {
    print('Data imported successfully' . PHP_EOL);
}

Python

在試行此示例之前,請至 BigQuery 快速入門導覽課程:使用用戶端程式庫,按照 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

如要取代現有資料表中的資料列,請將 LoadJobConfig.write_disposition 屬性設為 SourceFormat 常數 WRITE_TRUNCATE

# from google.cloud import bigquery
# client = bigquery.Client()
# table_ref = client.dataset('my_dataset').table('existing_table')

job_config = bigquery.LoadJobConfig()
job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE
job_config.skip_leading_rows = 1
# The source format defaults to CSV, so the line below is optional.
job_config.source_format = bigquery.SourceFormat.CSV
uri = "gs://cloud-samples-data/bigquery/us-states/us-states.csv"
load_job = client.load_table_from_uri(
    uri, table_ref, job_config=job_config
)  # API request
print("Starting job {}".format(load_job.job_id))

load_job.result()  # Waits for table load to complete.
print("Job finished.")

destination_table = client.get_table(table_ref)
print("Loaded {} rows.".format(destination_table.num_rows))

CSV 選項

如要變更 BigQuery 剖析 CSV 資料的方式,請在主控台、傳統版 UI、CLI 或 API 中指定額外選項。如要進一步瞭解 CSV 格式,請參閱 RFC 4180

CSV 選項 主控台選項 傳統版 UI 選項 CLI 標記 BigQuery API 屬性 說明
欄位分隔符號 欄位分隔符號:逗號、定位點分隔符號、管線符號及自訂符號 欄位分隔符號:逗號、定位點分隔符號及管線符號等 -F--field_delimiter fieldDelimiter (選用) CSV 檔案中的欄位分隔符。分隔符可以是任何 ISO-8859-1 半形字元。如果要使用 128-255 範圍內的字元,必須將字元編碼為 UTF8。BigQuery 會將字串轉換成 ISO-8859-1 編碼格式,並使用已編碼字串的第一個位元組來分割原始的二進位資料。BigQuery 也支援使用逸出序列 "\t" 來指定定位點分隔符。預設值為逗號 (`,`)。
標題列 要略過的標題列 要略過的標題列 --skip_leading_rows skipLeadingRows (選用) 表示來源資料標題列數量的整數。
允許的損壞記錄數量 Number of errors allowed (允許的錯誤數量) Number of errors allowed --max_bad_records maxBadRecords (選用) BigQuery 在執行工作時可忽略的損壞記錄數量上限。如果損壞記錄的數量超過這個值,工作結果中就會出現無效錯誤。預設值為 0,表示所有記錄都必須有效。
換行符號字元 允許引用換行符號 允許引用換行符號 --allow_quoted_newlines allowQuotedNewlines (選用) 表示 CSV 檔案中是否允許包含換行符號字元的引用資料區段。預設值為 false。
自訂空值 --null_marker nullMarker (選用) 指定代表 CSV 檔案中空值的字串。例如,如果指定 "\N",載入 CSV 檔案時,BigQuery 會將 "\N" 解譯為空值。預設值為空字串。如果將這個屬性設為自訂值,當 STRING 與 BYTE 以外的所有資料類型出現空字串時,BigQuery 會擲回錯誤。BigQuery 會將 STRING 與 BYTE 資料欄的空字串解譯為空值。
結尾自選欄 允許不規則資料列 允許不規則資料列 --allow_jagged_rows allowJaggedRows (選用) 接受缺少結尾自選欄的資料列。系統會將缺少的值視為空值。如為 false,系統會將缺少結尾資料欄的記錄視為損壞記錄;如果損壞記錄過多,工作結果中就會出現無效錯誤。預設值為 false。僅適用於 CSV,其他格式會忽略此選項。
不明的值 Ignore unknown values (略過不明的值) Ignore unknown values --ignore_unknown_values ignoreUnknownValues (選用) 表示 BigQuery 是否應允許不存在資料表結構定義中的其他值。如為 true,即會忽略其他值。如為 false,系統會將包含其他欄位的記錄視為損壞記錄;如果損壞記錄過多,工作結果中就會出現無效錯誤。預設值為 false。sourceFormat 屬性決定 BigQuery 將何種內容視為其他值:
  • CSV:結尾資料欄
  • JSON:與任何資料欄名稱均不相符的具名值
引號 --quote quote (選用) 在 CSV 檔案中用來引用資料區段的值。BigQuery 會將字串轉換成 ISO-8859-1 編碼格式,並使用已編碼字串的第一個位元組來分割原始的二進位資料。預設值為雙引號 ('"')。如果資料未包含引用區段,請將這個屬性值設為空字串。如果資料包含引用的換行符號字元,您也必須將 allowQuotedNewlines 屬性設為 true
編碼 -E--encoding encoding (選用) 資料的字元編碼。支援的值為 UTF-8 或 ISO-8859-1。預設值為 UTF-8。使用 quotefieldDelimiter 屬性的值分割原始的二進位資料後,BigQuery 會將資料解碼。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁