首页 > 解决方案 > 如何从 BigQuery 中提取表定义

问题描述

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

说原始表 orders为:

a integer
b string
c float

我想创建:orders-copy作为:

a integer
b string
c float

BigQuery 提供COPY来自 UI 的选项,但这也会复制数据。我想手动创建表,但它有 90+- 列。

我知道在创建表时有一个选项EDIT AS TEXT,有没有办法从现有表(orders)中获取相同格式的列名称和类型,以便从 UI 中轻松创建?

标签: google-bigquery

解决方案


您可以做几件事:

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

这是一个这样的查询:

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

推荐阅读