我正在尝试将放置在Google云端硬盘中的CSV文件导入BigQuery并失败。我收到错误消息Error while reading table, error message: CSV table encountered too many errors, giving up
。
我想知道是什么引起了错误。 CSV文件在A,B和D列中包含字符串,在C列中包含整数,在E和F列中浮动。定界符是制表符\t
。
虽然CSV文件包含的数据类似于图片1:
如果我查看Google云端硬盘中的文件预览,则会看到虚线,如图像2所示:但是,如果我直接从GDrive下载文件并用Notepad ++打开,则文件完全符合预期:数字带有逗号。作为小数点符号和制表符作为列定界符...
在创建BigQuery表时,我手动添加了列,并为其分配了字段类型。对于包含数字的列,我测试了integer
,float
和numeric
的任意组合-始终是相同的错误。
问:我应该如何格式化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
答案 0 :(得分:1)
经常发生的情况是,驱动器表上的语言设置是不同的,并且会出现“。”的错误。和“,”。
您可以在文件->电子表格设置中查看/更改
答案 1 :(得分:0)
我已将您的数据复制到Google表格中,然后使用标签作为字段分隔符将其导出,并且可以通过指定field delimiter来加载数据,但我没有遇到任何问题该表已创建(但是,数字used as a thousand separator always并不用逗号作为小数点分隔符)。因此,我将所有列都导入为字符串,然后像下面这样应用REGEX_REPLACE:
SELECT CAST(REGEXP_REPLACE(siberechnet, ",", ".") as numeric) as new_col FROM `project.dataset.table`
正确使用十进制数字
希望它对您的用例有所帮助。