簡體   English   中英

從 python 列表的值中插入一行到 google BigQuery 表

[英]Insert a row in to google BigQuery table from the values of a python list

我是一個正在探索 Google BigQuery 的新手。 我想從包含行值的 python 列表向 BigQuery 表中插入一行。

更具體地說,我的列表如下所示:[100.453, 108.75, 50.7773]

我從BigQuery-Python 庫插入中找到了一些提示,還查看了pandas bigquery writer,但不確定它們是否適合我的用例。

更好的解決方案是什么?

提前致謝。

要使用 Python 使用 Google Cloud Platform 服務,我建議使用python google-cloud和 BigQuery 的子模塊google-cloud-bigquery (這也是@polleyg 推薦的。這是一個開源 Python 慣用客戶端,由谷歌。這將使您能夠以簡單且一致的方式輕松使用所有谷歌雲服務。

更具體地說, 文檔中將Insert rows into a table's data下的示例展示了如何將 Python 元組/列表插入 BigQuery 表。

但是,根據您的需要,您可能需要其他選項,我對選項的排序:

  1. 如果您使用的代碼具有與 Google 服務(例如 BigQuery)的本機接口並且這符合您的需求,請使用它。 在您的案例中測試Pandas-BigQuery是否適合您。
  2. 如果您當前的代碼/模塊沒有本機界面,請嘗試使用Google 維護的慣用客戶端google-cloud
  3. 如果這不符合您的需求,請使用外部慣用客戶端,tylertreat/BigQuery-Python 問題是對於不同的服務,您會有不同的不一致客戶端。 好處是它添加了一些google-cloud模塊中沒有提供的功能。
  4. 最后,如果您使用非常新的 alpha/beta功能,請直接API 與Google API 模塊一起使用,這將始終讓您訪問最新的 API,但使用起來有點困難。 所以只有在之前的選項沒有給你你需要的時候才使用它。

有很多資源,但我通常發現代碼示例是最有用的開始。

這里有一個很好的 bigquery python 代碼示例集合: https : //github.com/googleapis/python-bigquery/tree/master/samples

插入行的一種直接方法:

from google.cloud import bigquery
bq_client = bigquery.Client()
table = bq_client.get_table("{}.{}.{}".format(PROJECT, DATASET, TABLE))

rows_to_insert = [{u"COL1": 100.453, u"COL2": 108.75, u"COL3": 50.7773}, {u"COL1": 200.348, u"COL2": 208.29, u"COL3": 60.7773}]

errors = bq_client.insert_rows_json(table, rows_to_insert)
if errors == []:
    print("success")

最后驗證是否插入成功使用

bq query --nouse_legacy_sql 'SELECT * FROM `PROJECT.DATASET.TABLE`'

希望對大家有幫助!

暫無
暫無

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

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