「Cloud Storage CSV 檔案到 BigQuery」管道是一種批次管道,可讓您從儲存在 Cloud Storage 的 CSV 檔案讀取資料,並將結果附加至 BigQuery 資料表。CSV 檔案可以未壓縮,也可以壓縮成「Compression
列舉 SDK」頁面中列出的格式。
管道相關規定
如要使用這項範本,您的管道必須符合下列需求。
BigQuery 結構定義 JSON 檔案
建立一個用來描述您 BigQuery 結構定義的 JSON 檔案。
確認結構定義包含標題為 BigQuery Schema
的頂層 JSON 陣列,且其中的內容遵循 {"name": "COLUMN_NAME", "type": "DATA_TYPE"}
這個格式。
Cloud Storage CSV 檔案至 BigQuery 批次範本不支援將資料匯入目標 BigQuery 資料表中的 STRUCT
(記錄) 欄位。
下列 JSON 描述 BigQuery 結構定義範例:
{ "BigQuery Schema": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
錯誤資料表結構定義
儲存 CSV 檔案中遭拒記錄的 BigQuery 資料表,必須符合這裡定義的資料表結構定義。
{ "BigQuery Schema": [ { "name": "RawContent", "type": "STRING" }, { "name": "ErrorMsg", "type": "STRING" } ] }
範本參數
必要參數
- inputFilePattern:包含待處理文字的 CSV 檔案 Cloud Storage 路徑。例如:
gs://your-bucket/path/*.csv
。 - schemaJSONPath:JSON 檔案 (用來描述您 BigQuery 結構定義) 的 Cloud Storage 路徑。
- outputTable:儲存已處理資料的 BigQuery 資料表名稱。假如您重複使用現有的 BigQuery 資料表,資料會附加到目的地資料表。
- bigQueryLoadingTemporaryDirectory:在 BigQuery 載入程序期間使用的暫存目錄。例如:
gs://your-bucket/your-files/temp_dir
。 - badRecordsOutputTable:處理 CSV 檔案時,用來儲存遭拒資料的 BigQuery 資料表名稱。假如您重複使用現有的 BigQuery 資料表,資料會附加到目的地資料表。這個資料表的結構定義必須與錯誤資料表結構定義 (https://cloud.google.com/dataflow/docs/guides/templates/provided/cloud-storage-csv-to-bigquery#GcsCSVToBigQueryBadRecordsSchema) 相符。
- 分隔符號:CSV 檔案使用的資料欄分隔符號。例如:
,
。 - csvFormat:根據 Apache Commons CSV 格式的 CSV 格式。預設值為
Default
。
選用參數
- containsHeaders:CSV 檔案中是否包含標頭。預設值為
false
。 - csvFileEncoding:CSV 檔案的字元編碼格式。允許的值為
US-ASCII
、ISO-8859-1
、UTF-8
和UTF-16
。預設值為 UTF-8。
執行範本
控制台
- 前往 Dataflow 的「Create job from template」(透過範本建立工作) 頁面。 前往「依據範本建立工作」
- 在「工作名稱」欄位中,輸入專屬工作名稱。
- 選用:如要使用區域端點,請從下拉式選單中選取值。預設區域為
us-central1
。如需可執行 Dataflow 工作的地區清單,請參閱「Dataflow 位置」。
- 從「Dataflow template」(Dataflow 範本) 下拉式選單中選取 the CSV files on Cloud Storage to BigQuery (Batch) template。
- 在提供的參數欄位中輸入參數值。
- 按一下「Run Job」(執行工作)。
gcloud
在殼層或終端機中執行範本:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_CSV_to_BigQuery \ --region REGION_NAME \ --parameters \ inputFilePattern=PATH_TO_CSV_DATA,\ schemaJSONPath=PATH_TO_BIGQUERY_SCHEMA_JSON,\ outputTable=BIGQUERY_DESTINATION_TABLE,\ badRecordsOutputTable=BIGQUERY_BAD_RECORDS_TABLE,\ csvFormat=CSV_FORMAT,\ delimiter=DELIMITER,\ bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\ containsHeaders=CONTAINS_HEADERS,\ csvFileEncoding=CSV_FILE_ENCODING
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
REGION_NAME
: 您要部署 Dataflow 工作的地區,例如us-central1
PATH_TO_CSV_DATA
:CSV 檔案的 Cloud Storage 路徑PATH_TO_BIGQUERY_SCHEMA_JSON
:指向 JSON 檔案 (內含結構定義) 的 Cloud Storage 路徑BIGQUERY_DESTINATION_TABLE
:BigQuery 目的地資料表名稱BIGQUERY_BAD_RECORDS_TABLE
:BigQuery 錯誤記錄資料表名稱PATH_TO_TEMP_DIR_ON_GCS
:暫時目錄的 Cloud Storage 路徑DELIMITER
:CSV 檔案分隔符號CSV_FORMAT
:用於剖析記錄的 CSV 格式規格CONTAINS_HEADERS
:CSV 檔案是否包含標頭CSV_FILE_ENCODING
:CSV 檔案中的編碼
API
如要使用 REST API 執行範本,請傳送 HTTP POST 要求。如要進一步瞭解 API 和授權範圍,請參閱 projects.templates.launch
。
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_CSV_to_BigQuery { "jobName": "JOB_NAME", "parameters": { "inputFilePattern":"PATH_TO_CSV_DATA", "schemaJSONPath": "PATH_TO_BIGQUERY_SCHEMA_JSON", "outputTable":"BIGQUERY_DESTINATION_TABLE", "badRecordsOutputTable":"BIGQUERY_BAD_RECORDS_TABLE", "csvFormat":"CSV_FORMAT", "delimiter":"DELIMITER", "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS", "containsHeaders": "CONTAINS_HEADERS", "csvFileEncoding": "CSV_FILE_ENCODING" }, "environment": { "zone": "us-central1-f" } }
更改下列內容:
PROJECT_ID
: 您要執行 Dataflow 工作的專案 ID Google CloudJOB_NAME
: 您選擇的不重複工作名稱VERSION
: 您要使用的範本版本您可以使用下列值:
latest
,使用範本的最新版本,該版本位於值區中非依日期命名的上層資料夾:gs://dataflow-templates-REGION_NAME/latest/- 版本名稱 (例如
2023-09-12-00_RC00
),用於指定範本版本,該版本會以巢狀結構存放在值區中依日期命名的上層資料夾中:gs://dataflow-templates-REGION_NAME/
LOCATION
: 您要部署 Dataflow 工作的地區,例如us-central1
PATH_TO_CSV_DATA
:CSV 檔案的 Cloud Storage 路徑PATH_TO_BIGQUERY_SCHEMA_JSON
:指向 JSON 檔案 (內含結構定義) 的 Cloud Storage 路徑BIGQUERY_DESTINATION_TABLE
:BigQuery 目的地資料表名稱BIGQUERY_BAD_RECORDS_TABLE
:BigQuery 錯誤記錄資料表名稱PATH_TO_TEMP_DIR_ON_GCS
:暫時目錄的 Cloud Storage 路徑DELIMITER
:CSV 檔案分隔符號CSV_FORMAT
:用於剖析記錄的 CSV 格式規格CONTAINS_HEADERS
:CSV 檔案是否包含標頭CSV_FILE_ENCODING
:CSV 檔案中的編碼
後續步驟
- 瞭解 Dataflow 範本。
- 請參閱 Google 提供的範本清單。