在Google的Big查询中,有没有一种方法可以克隆(仅复制结构)不包含数据的表?
bq cp似乎没有复制没有数据的结构的选项。具有过滤器(例如“ 1 = 2”)的“创建表为选择表(CTAS)”确实会创建不包含数据的表。但是,它不会复制分区/集群属性。
如果您想克隆表的结构以及分区/集群属性,而无需知道这些分区/集群属性究竟是什么 - 请按照以下步骤操作:
第 1 步:只需复制your_table到新表 - 比方说your_table_copy。这显然会复制整个表,包括所有属性(包括诸如描述、分区的到期等)和数据。注意:复制是免费操作
第 2 步:删除新创建的表中的数据 - 在查询语句下面运行
SELECT * FROM `project.dataset.your_table_copy` LIMIT 0
Run Code Online (Sandbox Code Playgroud)
在上面运行时,请确保将project.dataset.your_table_copy“覆盖表”设置为目标表作为“写入首选项”。注意:这也是免费步骤(因为 LIMIT 0)
您可以从 Web UI 或命令行或 API 或您选择的任何客户端轻松完成上述两个步骤 - 无论您最喜欢什么
您可以使用DDL并限制为0,但是您还需要在查询中表示分区和聚类
#standardSQL
CREATE TABLE mydataset.myclusteredtable
PARTITION BY DATE(timestamp)
CLUSTER BY
customer_id
AS SELECT * FROM mydataset.myothertable LIMIT 0
Run Code Online (Sandbox Code Playgroud)
这可以通过 BQ CLI 实现。
首先下载现有表的架构:
bq show --format=prettyjson project:dataset.table | jq '.schema.fields' > table.json
Run Code Online (Sandbox Code Playgroud)
然后,使用提供的架构和所需的分区创建一个新表:
bq mk \
--time_partitioning_type=DAY \
--time_partitioning_field date_field \
--require_partition_filter \
--table dataset.tablename \
table.json
Run Code Online (Sandbox Code Playgroud)
查看有关bq mk选项的更多信息:https : //cloud.google.com/bigquery/docs/tables
使用以下命令安装jq:npm install node-jq
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |