等同于“ CREATE TABLE my_table(LIKE your_table)”的BigQuery

时间:2018-09-13 03:22:15

标签: google-bigquery

我想创建一个表,该表的架构与另一个表完全相同。在其他SQL引擎中,我认为我可以使用“ CREATE TABLE my_table( Like your_table)”或某些变体。

我在BigQuery中找不到等效项。这有可能吗?

2 个答案:

答案 0 :(得分:3)

使用此表单:

CREATE TABLE dataset.new_table AS
SELECT *
FROM dataset.existing_table
LIMIT 0

这将创建一个具有与旧表相同模式的新表,并且由于LIMIT 0而没有成本。

但是请注意,这不会保留分区,表说明等。另一种选择是使用CLI(或API),制作表的副本,然后覆盖其内容,例如:

$ bq cp dataset.existing_table dataset.new_table
$ bq query --use_legacy_sql --replace --destination_table=dataset.new_table \
    "SELECT * FROM dataset.new_table LIMIT 0;"

现在,新表具有与原始表相同的结构和属性。

答案 1 :(得分:1)

要创建分区表和/或群集表,语法为:

创建表project.dataset.clustered_table PARTITION BY DATE(created_time) 聚类 帐户ID 选择时*来自project.dataset.example_table限制0