排解資料移轉問題
本頁說明如何排解將資料移轉或載入 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 選項略過標題列。