如何使用python修复在bigquery中上传csv文件

Posted

技术标签:

【中文标题】如何使用python修复在bigquery中上传csv文件【英文标题】:How to fix upload csv file in bigquery using python 【发布时间】:2019-01-07 09:06:45 【问题描述】:

通过存储在 BigQuery 上上传 csv 文件时,出现以下错误: CSV 表遇到太多错误,放弃。行数:5;错误: 1. 请查看错误流以获取更多详细信息。

在 schema 中,我使用所有参数作为字符串。

在 csv 文件中,我有以下数据:

是时候了。用我的风格说“我愿意”。

我无法在 BigQuery 中上传包含上述句子的 csv 文件

【问题讨论】:

我不知道 BigQuery,但在很多情况下使用 CSV 文件时,您可能必须使用 \" 转义“字符”,或者您必须将 CSV 引号字符从“更改为”(或正则表达式所有“输入/输出字符串中的字符到 ' ) 以便正确导入 CSV 数据。 【参考方案1】:

CSV 文件是否具有与数据集架构完全相同的结构?两者必须匹配才能成功上传。

如果您的 CSV 文件在第一列的第一行中只有一个句子,那么您的架构必须有一个表,其中只有一个字段为 STRING。如果 CSV 的第二列中有内容,则架构必须有第二个字段,依此类推。相反,如果您的架构将 2 个字段设置为 STRING,则 CSV 的前两列中必须有数据。

数据位置也必须匹配,如果您的 BigQuery 数据集在美国,那么您的 Cloud Storage 存储分区也必须在美国才能上传。

Check here 了解将 CSV 上传到 BigQuery 的详细信息。

【讨论】:

"是时候了。用我的风格说“我愿意”。"这是一个字段的完整值。对于在 BigQuery 表架构中定义为 STRING 的字段架构。 是的,由于 CSV 中只使用了一个字段,因此您的 BigQuery 架构也应该有一个字段作为字符串,并且只有一个字段。你能把你的架构贴在这里吗? schema = ['name': 'SUBJECT', 'type': 'STRING', 'mode': 'nullable','name': 'SUBJECT1', 'type': 'STRING', 'mode': 'nullable','name': 'SUBJECT2', 'type': 'STRING', 'mode': 'nullable'] 架构中定义了 3 个字段,这就是导致错误的原因。您必须至少填充 CSV 中前 3 列的前 3 个字段,或者修改 BigQuery 中的架构,使其只有一个字段,如下所示:schema = ['name': 'SUBJECT', 'type' : 'STRING', 'mode': 'nullable'] 我在 CSV 文件中有三个字段,如下所示:列名:主题、主题 1、主题 2 值:电子邮件、发件人、时间。用我的风格说“我愿意”。然后我也无法上传。【参考方案2】:

感谢大家的回复。

这是我对这个问题的解决方案:

with open('/path/to/csv/file', 'r') as f: text = f.read()

converted_text = text.replace('"',"'") print(converted_text)

with open('/path/to/csv/file', 'w') as f: f.write(converted_text)

【讨论】:

以上是关于如何使用python修复在bigquery中上传csv文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Bigquery 中为多个 CSV 文件自动创建表

从python上传到Bigquery

如何在不创建架构的情况下将 CSV 文件加载到 BigQuery

如何修复 BigQuery 表中意外重复的数据?

使用 Pandas 附加 BigQuery 表时如何修复无效架构

如何在 BigQuery UI 中安排查询时修复“请求包含无效参数”错误