如何登录数据到Bigquery

一方面是我学艺不精,我觉得bigquery特别难用。

当然主要说的是IDE,习惯了SSMS,SQL Developer,突然用BQ,很不适应。
不得不写SQL去增啥改数据,拿登录来说,大量的数据登录就很麻烦了。

BQ有个很搞笑,很自作聪明的功能,如果表里没有数据,登录一条,或者CSV上传一条数据,它会根据你登的数据去更改表字段的类型,理解不了大公司的脑洞。
导致我不得不在登录数据之前先设定好schema。

没办法了,自己写了Python程序,把需要登录的数据做成一个CSV,通过Python登进去。

先说module,这个是必须的。

from google.cloud import bigquery

接下来具体实现。

from google.cloud import bigquery

client = bigquery.Client()


job_config = bigquery.LoadJobConfig(
    # schema一个个地设定很麻烦,可以提成一个文件。或者变量。
    schema=[
        bigquery.SchemaField("name", "STRING"),
        bigquery.SchemaField("post_abbr", "STRING"),
    ],
    # 我这里用的是WRITE_TRUNCATE,会先把表清空,也可以指定别的
    # WRITE_APPEND也OK
    write_disposition=bigquery.WriteDisposition.WRITE_TRUNCATE,
    # 我用的是CSV,也可以指定JSON
    source_format=bigquery.SourceFormat.CSV,
)

# 请设定encoding,否则登不进去
# 如果你的项目里有带小数的,请个别设定为Str。
# 可以在read_csv里面的dtype参数里设定
df=pd.read_csv([csv路径], encoding="utf-8" dtype={'字段1':str,'字段2':str})

load_job = client.load_table_from_dataframe(
    df, table_id, job_config=job_config
)  

load_job.result() 

有一些别的module,请适当的导入或安装。
在bigquery.LoadJobConfig有这么一个OPTION,自动探索的说,说啥呢,就是一开始讲的,会更改表字段的类型,我是不会用的。

autodetect=True

也可以考虑使用下面的module导入数据。

import pandas
import pandas_gbq

pandas_gbq.to_gbq(df, table_id, project_id=project_id)

如果大家觉得有更好的办法,或者我的认知有误,请指出,不胜感谢。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值