如何在 Google BigQuery 中创建或替换表后立即执行 INSERT INTO 语句

Jul*_*sen 1 google-bigquery

我试图在创建后立即用一些数据填充新创建的表,就像在 MySQL 或 PostgreSQL 等常规 DBMS 中所做的那样。

但是,即使我用分号来分隔语句,它也会抱怨 CREATE OR REPLACE 语句之后的 INSERT 标记。

这就是我想要执行的:

#standardSQL
CREATE OR REPLACE TABLE `foo.bar.months` (text STRING, number INT64);
INSERT INTO `foo.bar.months` (text, number) VALUES ('Jan', 1), ('Feb', 2), ('Mar', 3), ('Apr', 4), ('May', 5), ('Jun', 6), ('Jul', 7), ('Aug', 8), ('Sep', 9), ('Oct', 10), ('Nov', 11), ('Dec', 12);
Run Code Online (Sandbox Code Playgroud)

如果我注释第二条语句并执行第一条语句,然后执行相反的操作(注释第一条语句并取消注释第二条语句并执行它),它就会起作用。它创建表,然后填充它。只是...我想一次性完成这一切。

我怎样才能做到这一点?

Ell*_*ard 5

将 AS SELECT 子句与 CREATE TABLE 一起使用:

CREATE OR REPLACE TABLE `foo.bar.months` AS
SELECT *
FROM UNNEST(
  ARRAY<STRUCT<text STRING, number INT64>>[
    ('Jan', 1), ('Feb', 2), ('Mar', 3), ('Apr', 4),
    ('May', 5), ('Jun', 6), ('Jul', 7), ('Aug', 8),
    ('Sep', 9), ('Oct', 10), ('Nov', 11), ('Dec', 12)]);
Run Code Online (Sandbox Code Playgroud)