create table from dataframe python bigquery

在Python中,如果你想要使用Google BigQuery来创建一个新的数据表,并将一个Pandas DataFrame中的数据插入到这个表中,你可以按照以下步骤操作:

安装并导入 pandas google-cloud-bigquery 库。你可以使用以下命令来安装这两个库:

pip install pandas google-cloud-bigquery

在安装完成后,你可以使用以下命令导入这两个库:

import pandas as pd
from google.cloud import bigquery

将Pandas DataFrame转换为一个符合BigQuery要求的数据格式。你可以使用to_gbq()方法将DataFrame写入到BigQuery中:

project_id = "your-project-id"
table_name = "your-table-name"
dataset_id = "your-dataset-id"
df.to_gbq(destination_table=f"{project_id}.{dataset_id}.{table_name}",
          project_id=project_id, 
          if_exists="replace")

这里,project_id是你的Google Cloud项目ID,table_name是你想要创建的数据表名称,dataset_id是你想要将这个表放在哪个数据集中。

如果你已经在BigQuery中创建了数据表,可以将if_exists参数设置为"append",这样就可以将DataFrame中的数据插入到已有的数据表中。

如果你在使用to_gbq()方法时遇到了身份验证方面的问题,你需要先创建一个Service Account并获得它的JSON凭据,然后使用以下代码来授权:

from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file("path/to/your/json/key")
df.to_gbq(destination_table=f"{project_id}.{dataset_id}.{table_name}",
          project_id=project_id, 
          if_exists="replace",
          credentials=credentials)

这里,path/to/your/json/key是你的Service Account JSON凭据的路径。

现在你已经将DataFrame中的数据写入到BigQuery中,接下来你可以使用以下代码来查询这个新创建的数据表:

client = bigquery.Client(project=project_id)
query = f"SELECT * FROM {project_id}.{dataset_id}.{table_name} LIMIT 10"
query_job = client.query(query)
results = query_job.result()
for row in results:
    print(row)

这里,client是一个bigquery.Client对象,你需要传入你的Google Cloud项目ID作为project参数。query是你想要查询的SQL语句,这里我们只是简单地查询了前10行数据。

希望这个回答对你有帮助!

  •