如何使用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文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在不创建架构的情况下将 CSV 文件加载到 BigQuery