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

kee*_*kee 3 google-bigquery

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

我在BigQuery中找不到对应的内容。这有可能吗?

Ell*_*ard 6

使用以下形式:

CREATE TABLE dataset.new_table AS
SELECT *
FROM dataset.existing_table
LIMIT 0
Run Code Online (Sandbox Code Playgroud)

这将创建一个具有与旧表相同模式的新表,并且由于不会产生任何费用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;"
Run Code Online (Sandbox Code Playgroud)

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