我有一个panda Dataframe ,想从它创建一个BigQuery表。我知道有很多帖子都在问这个问题,但到目前为止,我能找到的所有答案都需要显式地指定每一列的模式。例如:
from google.cloud import bigquery as bq
client = bq.Client()
dataset_ref = client.dataset('my_dataset', project = 'my_project')
table_ref = dataset_ref.table('my_table')
job_config = bq.LoadJobConfig(
schema=[
bq.SchemaField("a", bq.enums.SqlTypeNames.STRING),
bq.SchemaField("b", bq.enums.SqlTypeNames.INT64),
bq.SchemaField("c", bq.enums.SqlTypeNames.FLOAT64),
]
)
client.load_table_from_dataframe(my_df, table_ref, job_config=job_config).result()
然而,有时候我有一个包含很多列的 Dataframe (例如,100列),指定所有的列真的很不容易。有没有一种方法可以有效地做到这一点?
顺便说一句,我发现这个职位与类似的问题:Efficiently write a Pandas dataframe to Google BigQuery但似乎bq.Schema.from_dataframe
不存在:
AttributeError: module 'google.cloud.bigquery' has no attribute 'Schema'
3条答案
按热度按时间mspsb9vt1#
下面是将DataFrame加载到BQ的代码片段:
如果只想指定架构的子集,但仍导入所有列,则可以使用切换最后一行
8hhllhi22#
下面是工作代码:
mrwjdhj33#
现在只需安装
pandas-gbq==0.18.1
,然后文件:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_gbq.html
有关身份验证说明,请参见How to authenticate with Google BigQuery guide。