我正在尝试在创建新表后立即向其中填充一些数据,就像在像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);
如果我注释第二条语句并执行第一条,然后执行相反的操作(注释第一条语句并取消注释第二条语句并执行它),那么它将起作用。它创建表,然后填充它。只是...我想一次完成所有操作。
我该怎么做?
答案 0 :(得分:3)
在CREATE TABLE中使用AS SELECT子句:
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)]);
答案 1 :(得分:2)