簡體   English   中英

如何將 CSV 數據從 Google Drive/Google Sheets 正確導入 BigQuery

[英]How to import CSV data from Google Drive/Google Sheets into BigQuery correctly

我正在嘗試將放置在 Google Drive 中的 CSV 文件導入 BigQuery 並失敗。 Error while reading table, error message: CSV table encountered too many errors, giving up錯誤Error while reading table, error message: CSV table encountered too many errors, giving up

我想知道是什么導致了錯誤。 CSV 文件在 A、B 和 D 列中包含字符串,在 C 列中包含整數,在 E 和 F 列中包含浮點數。分隔符是制表符\\t

雖然 CSV 文件包含類似於圖像 1 的數據:

所以看起來Excel中的數據

如果我查看 Google Drive 中的文件預覽,我會看到殘破的數字,如圖 2 所示:但是,如果我直接從 GDrive 下載文件並使用 Notepad++ 打開它,則文件完全符合預期:數字以逗號作為小數點和制表符作為列分隔符...

在此處輸入圖片說明

在創建 BigQuery 表時,我手動添加列並為其分配字段類型。 對於包含數字的列,我測試了integerfloatnumeric任意組合 - 總是相同的錯誤。

:我應該如何格式化 CSV 文件以使導入成為可能?

這是該文件的示例:

Domain  Keywords    RP  Brand   SI  SiBerechnet
example.de  accura versicherung 1   accura  293,9   0,00244913
example.de  accura versicherung erfahrung   1   accura  63,9    0,00053249
example.de  accura versicherung für wohnmobile  1   accura  43,9    0,00036583
example.de  accura versicherung keine wohnmobile mehr   1   accura  53,9    0,00044916
example.de  accura versicherungsmakler  1   accura  83,9    0,00069916
example.de  accura versicherung test    1   accura  43,9    0,00036583
example.de  accura versicherung wohnmobil   1   accura  73,9    0,00061582
example.de  accura wohnmobilversicherung erfahrungen    1   accura  73,9    0,00061582
example.de  aufgaben innendienst versicherung   75  non brand   0,133333333 0,00000111
example.de  aufgaben versicherung innendienst   59  non brand   0,169491525 0,00000141
example.de  basler versicherung kfz telefonnummer   98  basler  0,102040816 0,00000085
example.de  basler versicherung kundenservice   96  basler  0,104166667 0,00000087
example.de  basler wohnmobilversicherung    8   basler  3,86    0,00003217
example.de  bergungskosten unfallversicherung   37  non brand   0,810810811 0,00000676
example.de  berufsunfähigkeitsversicherung bei bürojob  84  non brand   0,238095238 0,00000198
example.de  berufsunfähigkeitsversicherung bürojob  83  non brand   1,084337349 0,00000904
example.de  betriebshaftpflicht für hausmeisterservice  87  non brand   0,114942529 0,00000096
example.de  betriebshaftpflicht für hausverwalter   29  non brand   1,034482759 0,00000862
example.de  betriebshaftpflicht hausmeister 87  non brand   0,114942529 0,00000096
example.de  betriebshaftpflicht hausverwalter   26  non brand   0,384615385 0,00000321
example.de  betriebsunterbrechungsversicherung freiberufler 46  non brand   0,217391304 0,00000181
example.de  braucht eine krankenschwester eine diensthaftpflichtversicherung    15  non brand   2,706666667 0,00002256
example.de  campingfahrzeug versicherung    39  non brand   1,025641026 0,00000855
example.de  dienst haftpflicht  99  non brand   0,303030303 0,00000253
example.de  diensthaftpflicht öffentlicher dienst   55  non brand   0,545454545 0,00000455
example.de  diensthaftpflichtversicherung   57  non brand   22,80701754 0,00019006
example.de  dienst haftpflichtversicherung  84  non brand   0,238095238 0,00000198
example.de  diensthaftpflichtversicherung beamte    90  non brand   0,555555556 0,00000463
example.de  diensthaftpflichtversicherung für soldaten  28  non brand   0,357142857 0,00000298
example.de  diensthaftpflichtversicherung kosten    80  non brand   0,5 0,00000417
example.de  diensthaftpflichtversicherung öffentlicher dienst   51  non brand   0,980392157 0,00000817
example.de  diensthaftpflichtversicherung öffentlicher dienst angestellte   63  non brand   0,158730159 0,00000132
example.de  diensthaftpflichtversicherung polizei   69  non brand   0,724637681 0,00000604
example.de  diensthaftpflichtversicherung soldaten  26  non brand   0,769230769 0,00000641
example.de  einbauküche hausrat oder gebäude scheidung  31  non brand   0,64516129  0,00000538
example.de  einbauküche hausratversicherung oder gebäudeversicherung    12  non brand   2,643333333 0,00002203

經常發生的情況是驅動器表上的語言設置不同,並且會出現“。” 和 ”,”。

您可以在文件 -> 電子表格設置中查看/更改此設置

我已將您的數據復制到 Google 表格中,然后我將它與選項卡一起導出為字段分隔符,並且我能夠通過指定字段分隔符來加載數據,並且在創建表時我沒有遇到任何問題(但是數字沒有將逗號作為十進制分隔符,因為它總是用作千位分隔符)。 因此,我將所有列作為字符串導入,然后應用了如下所示的REGEX_REPLACE

SELECT CAST(REGEXP_REPLACE(siberechnet, ",", ".") as numeric) as new_col FROM `project.dataset.table`

正確使用十進制數

希望它對您的用例有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM