如何通过命令行从Google Sheet程序化创建BigQuery表?
通过命令行从Google Sheet创建BigQuery表
方法一:直接用bq命令行工具导入
这是最简便的官方方式,无需导出本地文件。
前置准备
- 完成Google Cloud身份验证:执行
gcloud auth login或bq init登录你的账号 - 确保你的账号有目标BigQuery数据集的编辑权限,以及该Google Sheet的查看权限
- 获取Sheet的关键信息:
- 表格ID:Sheet URL中
d/后面的字符串,比如https://docs.google.com/spreadsheets/d/123abcXYZ/edit里的123abcXYZ - 工作表名称:Sheet底部的标签名,比如
Sheet1
- 表格ID:Sheet URL中
执行导入命令
bq load \ --source_format=GOOGLE_SHEETS \ --replace \ --autodetect \ 你的项目ID.你的数据集ID.目标表名 \ 'https://docs.google.com/spreadsheets/d/[表格ID]/gviz/tq?tqx=out:csv&sheet=[工作表名称]'
--replace:如果目标表已存在就覆盖,换成--append可以追加数据--autodetect:自动识别列名和数据类型,不用手动写schema- 最后一行的链接要替换
[表格ID]和[工作表名称]为实际值
方法二:先导出Sheet为CSV再导入(适合特殊场景)
如果遇到权限或格式兼容问题,可以先把Sheet导出到本地CSV,再导入BigQuery。
步骤1:用gdrive导出Sheet为CSV
先安装并授权gdrive工具(执行gdrive auth login完成登录),然后导出:
gdrive export --mime text/csv [表格ID] --sheet [工作表名称] --out sheet-data.csv
这条命令会把指定工作表导出为本地的sheet-data.csv文件。
步骤2:用bq导入CSV到BigQuery
bq load \ --source_format=CSV \ --replace \ --autodetect \ --skip_leading_rows=1 \ 你的项目ID.你的数据集ID.目标表名 \ ./sheet-data.csv
--skip_leading_rows=1:跳过CSV的表头行(如果Sheet有表头的话)
内容的提问来源于stack exchange,提问作者Mark Harrison
相关产品推荐
相关产品推荐

