我有数百个BigQuery表,并希望将它们合二为一.我开始尝试列出我的桌子.我试过bq ls,但它只显示20到50个表.另外我如何在Bigquery中执行类似于SELECT*INTO ...的操作.
我的应用程序日志有很多表,例如:
要实现SELECT*INTO ...您可以使用逗号对SELECT*FROM所有表执行操作,并根据https://cloud.google.com/bigquery/bq-command-line-tool#createtablequery指定目标表
例如:
DATASET=[YOUR_DATASET_NAME]
TABLES=$(bq ls --max_results=1000 --format=csv $DATASET | \
grep -v "tableId,Type" | cut -d "," -f 1 | tr "\n" ",")
bq --dataset_id=$DATASET query --destination_table=$DATASET.merged \
"select * from $TABLES"
Run Code Online (Sandbox Code Playgroud)
注意:如果表格有公共字段,但它们没有完全排列,则必须列出公共字段而不是*
如果您有特定的表格模式,您还可以在查询中使用通配符 https://cloud.google.com/bigquery/query-reference#tablewildcardfunctions
例如,匹配示例weblog数据集中的201506*表
DATASET=weblog
PREFIX=201506
bq query --destination_table=$DATASET.merged query "SELECT * FROM
(TABLE_QUERY($DATASET, 'REGEXP_MATCH(table_id, r\"^"$PREFIX"[\d]{4}\")'))"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |