insert into
用于向表插入数据。
注:
若要向分布式表中插入数据,请先调整配置项
enableInsertStatementForDFSTable。
语法
insert into
table_name1 (colName1 [, colName2, ...])
values (X [, Y, ...]) | select col_name(s) from table_name2
其中, colName 指定目标表中的列名,可以有以下三种方式:
-
不加引号的列名
colName -
双引号括起来的列名
"colName" -
前加下划线的双引号列名
_"colName"
例子
使用 VALUE 子句插入
t=table(`XOM`GS`FB as ticker, 100 80 120 as volume);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
insert into t values(`GOOG, 200);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
insert into t values(`AMZN`NFLX, 300 250);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
insert into t values(('AMD','NVDA'), (60 400));
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
| AMD | 60 |
| NVDA | 400 |
上例还有另一种写法,即按照 SQL 标准写法,直接向表 t 传入多行数据。可得结果一致。
insert into t values ('AMD', 60), ('NVDA', 400);
t;
| ticker | volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 200 |
| AMZN | 300 |
| NFLX | 250 |
| AMD | 60 |
| NVDA | 400 |
只往部分列插入新的记录:
insert into t(ticker, volume) values(`UBER`LYFT, 0 0);
t;
| ticker | price | volume |
|---|---|---|
| XOM | 98.5 | 100 |
| GS | 12.3 | 80 |
| FB | 40.6 | 120 |
| GOOG | 100.6 | 200 |
| AMZN | 120 | 300 |
| NFLX | 56.6 | 250 |
| AMD | 78.6 | 60 |
| NVDA | 33.1 | 400 |
| UBER | 0 | |
| LYFT | 0 |
使用 SELECT 子句从查询结果插入
t1 = table(`XOM`GS`FB as ticker, 100 80 120 as volume)
t1
|
ticker |
volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
t2 = table(`GOOG`AMZN`NFLX as ticker, 100 80 120 as volume);
t2
|
ticker |
volume |
|---|---|
| GOOG | 110 |
| AMZN | 90 |
| NFLX | 150 |
insert into t1(ticker,volume) select ticker,volume from t2
t1
|
ticker |
volume |
|---|---|
| XOM | 100 |
| GS | 80 |
| FB | 120 |
| GOOG | 110 |
| AMZN | 90 |
| NFLX | 150 |
将表中所有列插入,等价于以下两种写法
insert into t1 select * from t2
insert into t1 t2
