如何从BigQuery提取表定义

时间:2018-07-16 08:47:05

标签: google-bigquery

我想复制没有数据的特定表模式。 基本上创建一个具有不同名称的干净表。

将原始表orders表示为:

a integer
b string
c float

我要创建:orders-copy为:

a integer
b string
c float

BigQuery在用户界面中提供了COPY选项,但这也会复制数据。 我想手动创建表格,但它有90 +-列。

我知道在创建表时有一个选项EDIT AS TEXT,有没有办法从现有表(orders)中获取相同格式的列名和类型,因此从用户界面会很容易吗?

2 个答案:

答案 0 :(得分:3)

您可以做一些事情:

  • 如前所述,您可以在创建表时使用EDIT AS TEXT选项。但是手动为大量列添加列设置可能会很困难
  • 您可以使用BQ CLI。
    • 您可以在其中检索表的模式
    • 然后您可以从架构中创建一个空表
    • 但这需要下载并安装CLI
  • BQ API也应具有与CLI相同的功能
  • 或者您可以使用网络视图快速获得结果
    • 正常复制表格
    • 然后编写查询以从复制的表中删除。

这是一个查询:

#standardSQL
DELETE FROM `BQ_project_name.dataset_name.table_name_COPY`
WHERE 1=1;

答案 1 :(得分:1)

您可以使用API​​调用来检索表架构。使用此link来检索您的表模式,如下所示:

new

,您可以使用它通过遵循此doc

来创建带有模式的表