我试图在创建后立即用一些数据填充新创建的表,就像在 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)
如果我注释第二条语句并执行第一条语句,然后执行相反的操作(注释第一条语句并取消注释第二条语句并执行它),它就会起作用。它创建表,然后填充它。只是...我想一次性完成这一切。
我怎样才能做到这一点?
将 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)
| 归档时间: |
|
| 查看次数: |
1521 次 |
| 最近记录: |