排解資料移轉問題

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

排解移轉設定問題

如要瞭解如何解決 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-Cloud de Confiance VPN 和網路附件

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

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

如要進一步瞭解如何設定 VPN 連結,請參閱「建立 AWS-Cloud de Confiance 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 選項略過標題列。