BigQuery检查表是否存在

时间:2017-03-17 14:04:06

标签: sql google-bigquery google-cloud-storage google-cloud-platform

我正在使用C#根据bigquery api表端点的响应动态构造查询。我正在尝试计算有效的用户,但前提是我选择了.*的每个表。我的问题很简单,有没有办法检查BigQuery SQL中是否存在表?

2 个答案:

答案 0 :(得分:5)

有名为$ ./odoo/odoo-bin -d todo -u todo_app --test-enable 2017-03-17 14:25:28,617 6873 INFO ? odoo: Odoo version 10.0 2017-03-17 14:25:28,618 6873 INFO ? odoo: Using configuration file at /home/odoo/.odoorc 2017-03-17 14:25:28,618 6873 INFO ? odoo: addons paths: ['/home/odoo/.local/share/Odoo/addons/10.0', u'/home/odoo/odoo-dev/custom-addons', u'/home/odoo/odoo-dev/odoo/addons', '/home/odoo/odoo-dev/odoo/odoo/addons'] 2017-03-17 14:25:28,619 6873 INFO ? odoo: database: default@default:default 2017-03-17 14:25:28,832 6873 INFO ? odoo.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069 2017-03-17 14:25:29,558 6873 INFO todo odoo.modules.loading: loading 1 modules... 2017-03-17 14:25:29,996 6873 INFO todo odoo.modules.loading: 1 modules loaded in 0.44s, 0 queries 2017-03-17 14:25:41,792 6873 INFO todo odoo.modules.loading: loading 13 modules... 2017-03-17 14:25:42,001 6873 INFO todo odoo.modules.registry: module todo_app: creating or updating database tables 2017-03-17 14:25:42,889 6873 INFO todo odoo.modules.loading: 13 modules loaded in 1.10s, 0 queries 2017-03-17 14:25:43,059 6873 WARNING todo odoo.modules.loading: The model todo.task has no access rules, consider adding one. E.g. access_todo_task,access_todo_task,model_todo_task,,1,0,0,0 2017-03-17 14:25:43,625 6873 INFO todo odoo.modules.loading: Modules loaded. 2017-03-17 14:25:43,630 6873 INFO todo odoo.modules.loading: All post-tested in 0.00s, 0 queries __TABLES__

的元表

您可以运行如下查询:

__TABLES_SUMMARY__

该查询的SELECT size_bytes FROM <dataset>.__TABLES__ WHERE table_id='mytablename' 部分可能看起来不熟悉。 __TABLES__是一个元表,包含有关数据集中表的信息。您可以自己使用此元表。例如,查询__TABLES_SUMMARY__将返回有关SELECT * FROM publicdata:samples.__TABLES_SUMMARY__数据集中表格的元数据。您也可以publicdata:samples

可用字段:

SELECT * FROM publicdata:samples.__TABLES__元表的字段(__TABLES_SUMMARY__查询中都可用)包括:

  • TABLE_QUERY:表格的名称。
  • table_id:表格创建后的时间,自1970年1月1日UTC以来的毫秒数。这与表中的creation_time字段相同。
  • creation_time:无论是视图(2)还是常规表(1)。

type中的以下字段,因为它们是TABLE_QUERY()的成员,但不是__TABLES__的成员。他们留在这里是为了历史,并部分记录__TABLES_SUMMARY__ metatable:

  • __TABLES__:自1970年1月1日UTC以来的毫秒,表格已更新(元数据或表格内容)。请注意,如果您使用last_modified_time将记录流式传输到您的表格,则可能会过时几分钟。
  • tabledata.insertAll():表格中的行数。
  • row_count:表格的总大小(以字节为单位)。

答案 1 :(得分:2)

#standardSQL
SELECT COUNT(1) AS cnt
FROM `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'mytable'