排解資料移轉問題

本頁說明如何排解將資料移轉或載入 BigQuery 時發生的問題。您可以解決與 BigQuery 資料移轉服務、跨 Amazon Web Services (AWS) 的網路連線、Cloud SQL 和虛擬私有雲 (VPC) 網路,以及從 Cloud Storage 載入 CSV 資料的工作相關的常見錯誤。 Google Cloud

排解移轉設定問題

如要瞭解如何解決 BigQuery 資料移轉服務的問題,請參閱排解移轉設定問題。

如果從外部或合作夥伴資料來源設定或執行轉移作業,請參閱「排解第三方轉移設定問題」。

使用 INFORMATION_SCHEMA 檢視畫面診斷工作

您可以查詢 INFORMATION_SCHEMA.JOBS 檢視畫面,近乎即時地診斷失敗或緩慢的載入工作,以及轉移查詢。如果載入工作或轉移查詢失敗,請檢查「error_result」和「errors」欄,找出根本原因,例如結構定義不符、配額限制或權限錯誤。

下列範例查詢 INFORMATION_SCHEMA.JOBS 會擷取過去 24 小時內載入工作失敗的錯誤詳細資料:

SELECT
  job_id,
  creation_time,
  user_email,
  error_result.reason AS error_reason,
  error_result.message AS error_message,
  errors
FROM
  `region-REGION`.INFORMATION_SCHEMA.JOBS
WHERE
  job_type = 'LOAD'
  AND state = 'DONE'
  AND error_result IS NOT NULL
  AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
ORDER BY
  creation_time DESC;

將 <var>REGION</var> 替換為資料集區域名稱,例如 us 或 europe-west1。

排解轉移網路連線問題

從外部雲端服務供應商或私人資料庫執行個體轉移資料時,網路路由或防火牆規則可能會封鎖連線。請參閱下列各節,排解 VPN 附件和私人網路連線的問題。

AWS-Google Cloud VPN 和網路附件

如果無法順利設定網路連結,請按照下列步驟操作:

  • 確認 AWS 控制台和 Google Cloud 控制台中的 VPN 連線都已啟動並正常運作。
  • 檢查 VPN 記錄是否有錯誤或封包遺失。
  • 確認 AWS 和Google Cloud 中的路由表設定正確無誤。
  • 確認 AWS 安全性群組和 Google Cloud 防火牆規則中已開啟必要通訊埠。

如要進一步瞭解如何設定 VPN 連結,請參閱「建立 AWS-Google Cloud VPN 和網路連結」。

Cloud SQL 執行個體存取權

如果無法設定網路,請按照下列步驟操作:

  • 確認已建立虛擬私有雲對等互連,且路徑設定正確無誤。
  • 確認防火牆規則允許必要通訊埠的流量。
  • 檢查 Cloud SQL Proxy 記錄是否有錯誤,並確認 Proxy 正常運作。
  • 確認網路連結已正確設定並連線。

如要進一步瞭解如何設定私人資料庫存取權,請參閱「連線至 Cloud SQL 執行個體」。

排解載入 CSV 檔案的問題

將 Cloud Storage 中的 CSV 資料載入 BigQuery 時,作業可能會因格式錯誤、檔案大小限制或結構定義自動偵測問題而失敗。請參閱下列各節,解決常見的 CSV 載入錯誤。

排解剖析錯誤

如果剖析 CSV 檔案時發生問題,載入工作的 errors 資源就會填入錯誤詳細資料。

一般來說,這類錯誤會以位元組偏移量標示問題行的開頭。如果是未壓縮的檔案,您可以使用 gcloud storage 和 --recursive 引數存取相關行。

舉例來說,您執行 bq load 指令,並收到錯誤訊息:

bq load
    --skip_leading_rows=1 \
    --source_format=CSV \
    mydataset.mytable \
    gs://my-bucket/mytable.csv \
    'Number:INTEGER,Name:STRING,TookOffice:STRING,LeftOffice:STRING,Party:STRING'

輸出內容中的錯誤訊息如下所示:

Waiting on bqjob_r5268069f5f49c9bf_0000018632e903d7_1 ... (0s)
Current status: DONE
BigQuery error in load operation: Error processing job
'myproject:bqjob_r5268069f5f49c9bf_0000018632e903d7_1': Error while reading
data, error message: Error detected while parsing row starting at position: 1405.
Error: Data between close quote character (") and field separator.
File: gs://my-bucket/mytable.csv
Failure details:
- gs://my-bucket/mytable.csv: Error while reading data,
error message: Error detected while parsing row starting at
position: 1405. Error: Data between close quote character (") and
field separator. File: gs://my-bucket/mytable.csv
- Error while reading data, error message: CSV processing encountered
too many errors, giving up. Rows: 22; errors: 1; max bad: 0; error
percent: 0

根據上述錯誤,檔案中有格式錯誤。 如要查看檔案內容,請執行 gcloud storage cat 指令:

gcloud storage cat 1405-1505 gs://my-bucket/mytable.csv --recursive

輸出結果會與下列內容相似:

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican
18,Ulysses S. Grant,"March 4, 1869",
...

根據檔案的輸出內容,問題是 "April 15, "1865 中引號的位置有誤。

壓縮的 CSV 檔案

由於回報的位元組偏移量是指未壓縮檔案中的位置,因此偵錯壓縮 CSV 檔案的剖析錯誤更具挑戰性。下列 gcloud storage cat 指令會從 Cloud Storage 串流檔案、解壓縮檔案、找出適當的位元組偏移,並列印含有格式錯誤的行:

gcloud storage cat gs://my-bucket/mytable.csv.gz | gunzip - | tail -c +1406 | head -n 1

輸出結果會與下列內容相似:

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican

排解配額錯誤

使用本節中的資訊,排解將 CSV 檔案載入 BigQuery 時發生的配額或限制錯誤。

如果您使用 bq load 指令載入大型 CSV 檔案,並搭配 --allow_quoted_newlines 旗標,可能會遇到這個錯誤。

錯誤訊息

Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...

解析度

如要解決這項配額錯誤,請按照下列步驟操作:

  • 將 --allow_quoted_newlines 旗標設為 false。
  • 將 CSV 檔案分割成較小的區塊,每個區塊的大小不得超過 4 GB。

如要進一步瞭解將資料載入 BigQuery 時的限制,請參閱「載入工作」。

排解結構定義自動偵測功能問題

自動偵測 CSV 檔案的結構定義時,可能會遇到下列錯誤:

錯誤:Error while reading data, error message: CSV processing encountered too many errors, giving up.

如果 CSV 檔案的標題列含有字串值,但 BigQuery 未偵測到標題列,就可能發生這個錯誤。您可以使用 --skip_leading_rows 選項略過標題列。