2012-06-13 95 views
1

我有一個與大查詢作業失敗,並顯示「遇到錯誤的字符(ASCII 0)」。

行的錯誤而失敗的作業:14222274 /字段:1,壞字符(ASCII 0)時發生的。其餘文件未處理。

數據被壓縮,我已驗證文件中不存在ASCII 0字符。文件中只有14222273行,所以打印在錯誤消息中的行號是文件末尾的一行。我有相同的數據集已成功上傳其他塊,所以我懷疑這是一個BQ錯誤,或者錯誤信息並不表示潛在的問題。任何幫助解決這個問題,將不勝感激。謝謝。

>>> data = open("data.csv").read() 
>>> chr(0) in data 
False 
>>> data[-1] 
'\n' 
+0

嗨,John:你能否確認未壓縮的文件沒有結尾的'\ 0'字符? –

+0

@MichaelManoochehri 該文件的最後一個字節是換行符。 (0)in open(「data.csv」)。read() False' –

+0

在沒有實際數據的情況下調試它幾乎是不可能的。您可以將原始問題文件解壓縮,將其分成2個文件,重新gzip並重新獲取到BigQuery中?或者,您是否可以用原始文件的最後兩行創建一個新文件,嘗試重新攝取,並讓我們知道您是否得到相同的錯誤? –

回答

1

當你壓縮你使用的是什麼工具?

我看到這個問題,當我壓縮我的csv文件的ZIP格式(在Windows中)。 Google BigQuery似乎只接受gzip格式。

確保使用gzip壓縮您的CSV。如果你在窗口7-zip是一個偉大的實用工具,它允許你在gzip壓縮。

在Unix中gzip是標準的。

+0

我在Ubuntu 11.10上使用gzip 1.3.12。 –

+0

你是否還檢查過字符編碼。該文件應該是UTF-8格式。它也支持另一種編碼。字符編碼 默認情況下,BigQuery服務期望所有源數據都是UTF-8編碼。或者,如果您有以ISO-8859-1格式編碼的數據,則應在導入數據時明確指定編碼,以便BigQuery在導入過程中可以將數據正確地轉換爲UTF-8。目前,只能導入ISO-8859-1或UTF-8編碼的數據。在指定數據的字符編碼時請記住以下幾點: –

0

我有類似的問題,試圖在BigQuery中加載一個壓縮文件(將其保存在Google Cloud Storage中)。這些是日誌:

 
File: 0/Offset:4563403089/Line:328480/Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) 
File: 0/Offset:4563403089/Line:328485/Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) 
File: 0/Offset:4563403089/Line:328490/Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) 
File: 0/Offset:4563403089/Line:328511/Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) 
File: 0/Offset:4563403089/Line:328517/Field:21: Bad character (ASCII 0) encountered: field starts with: (error code: invalid) 

爲了解決問題我所做的是從壓縮文件中刪除ASCII 0字符。要做到這一點,我執行以下commnad從計算引擎的實例與安裝SDK:

gsutil cp gs://bucket_987234/compress_file.gz - | gunzip | tr -d '\000' | gsutil cp - gs://bucket_987234/uncompress_and_clean_file

通過使用管道,我避免有硬盤(1G壓縮+ 52G解凍)上的所有存儲。第一個程序從存儲獲取壓縮文件,第二個程序解壓縮它,第三個程序刪除ASCII 0字符,第四個程序將結果更新到存儲。

當我再次上傳到存儲時,我不會壓縮結果,因爲BigQuery會更快地加載未壓縮的文件。之後,我可以毫無問題地加載BigQuery數據。

0

遇到壞字符(ASCII 0)。其餘文件未處理。

顯然States你有一個UTF-16字符不能被解碼。 BigQuery服務僅支持UTF-8和latin1文本編碼。所以,該文件應該是UTF-8編碼的。

只有14222273的文件中的行,所以這是 錯誤消息印刷的行號是一行過去的文件的末尾。

很可能你在文件末尾有一個UTF-16編碼的製表符,它不能被解碼。


解決方案:使用-a--ascii國旗gzip命令。它會被解碼爲bigquery

相關問題