gpt4 book ai didi

python - 通过 bigquery-python 库向 BigQuery 插入大量数据

转载 作者:太空狗 更新时间:2023-10-29 21:56:24 27 4
gpt4 key购买 nike

我有大型 csv 文件和 excel 文件,我在其中读取它们并根据其具有的字段和类型动态创建所需的创建表脚本。然后将数据插入到创建的表中。

我已阅读 this并且明白我应该用 jobs.insert() 而不是 tabledata.insertAll() 来发送大量数据。

这就是我的称呼(适用于较小的文件而不是大文件)。

result  = client.push_rows(datasetname,table_name,insertObject) # insertObject is a list of dictionaries

当我使用图书馆的 push_rows 时它在 Windows 中给出了这个错误。

[Errno 10054] An existing connection was forcibly closed by the remote host

这在 ubuntu 中。

[Errno 32] Broken pipe

所以当我通过 BigQuery-Python 时它使用 table_data.insertAll() 的代码。

我如何使用该库执行此操作?我知道我们可以通过 Google 存储上传,但我需要直接上传方法。

最佳答案

处理大文件时不要使用流,而是批加载:流可以轻松处理每秒 100,000 行。这对于流式传输非常有用,但不适合加载大文件。

链接的示例代码做的是正确的事情(批处理而不是流式传输),所以我们看到的是一个不同的问题:该示例代码试图将所有这些数据直接加载到 BigQuery 中,但是通过 POST 部分上传失败。 gsutil 具有比普通 POST 更强大的上传算法。

解决方案:不要通过 POST 加载大块数据,而是先将它们暂存在 Google Cloud Storage 中,然后告诉 BigQuery 从 GCS 读取文件。

另见 BigQuery script failing for large file

关于python - 通过 bigquery-python 库向 BigQuery 插入大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38971523/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com