2016-06-24 55 views
1

我有包含空字符串的gz CSV文件。當我在BQ中導入時,我將所有這些空字符串都作爲NULL,而實際上我需要它們作爲空字符串。在BigQuery中導入空字符串

一排在我的CSV文件看起來像:

ip,aahsjjjja,,,,u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 

我需要3,第4和第5欄是空的,而不是NULL。

任何建議如何在導入過程中這樣做?

在此先感謝! 讓我知道我是否可以提供更多信息。

最佳, 加林娜

+0

該文件是否位於GCS?如果是這樣,您可以使用聯合源加載它並一次性轉換字段。 –

回答

0

檢查Load Job配置configuration.load.quote屬性:

用來報價數據部分的CSV文件中的值。 BigQuery 將字符串轉換爲ISO-8859-1編碼,然後使用編碼字符串的第一個 字節將數據拆分爲原始二進制狀態。 。 默認值是一個雙引號(「「」)如果你的數據不 包含引用的部分,屬性值設置爲empty string

需要明確的是 - 你的榜樣行應該如下

ip,aahsjjjja,"","","",u,opera,x11,pc,2016-06-13,2016-06-13,1,1,1 
+0

請注意,更改引號字符不會改變BQ如何解釋這些字段:它們仍將被加載爲空。 –

+0

我沒有得到您的評論。你只是在你的回答中重複相同的建議:o) –

+0

哦,我明白了 - 你以爲我建議改變報價charachter?不 - 我只是指出它可以用於加載csv –

0

當轉換CSV,BQ解釋空字符串作爲空,""作爲非空空字符串。如果你有過怎樣產生的CSV控制,您可以用""更換空字符串,以獲得預期結果

另一種方法是像現在一樣加載數據,然後運行查詢來清理數據。例如:

SELECT ..., IFNULL(x, "") x, ... 
FROM table 

缺點是,這會增加您的提取的另一個步驟,您將支付額外的查詢費用。

+0

這是我第一次考慮做的事情,但表的大小和數量非常大,所以我希望避免這些額外的查詢成本。但是,這似乎是不可避免的。謝謝你們! –