我有数百个BigQuery表,并希望将它们合二为一。我开始尝试列出我的桌子。我试过bq ls,但它只显示20到50个表。另外,我如何在Bigquery中执行与SELECT * INTO ...类似的操作。
我的应用程序日志有很多表,例如:
答案 0 :(得分:5)
要实现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"
注意:如果表格有公共字段,但它们没有完全排列,则必须列出公共字段而不是*
如果您具有特定的表名模式,则还可以在查询中使用通配符 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}\")'))"