Hive Loop 在同一个 table 中插入 select
Hive Loop Insert into select in a same table
我目前正在研究 Hive,我想在现有的 table 中插入一个 n 倍于其内容的数字。
为了说明我想要什么:
我有一个 table test (var1 STRING, var2 STRING, var3 STRING) 例如 20 行。
我想在 table 中插入测试 20 行 n 次(例如 3 次,以便在我的循环结束时有 80 行)。
我试过这种请求:
for n in 1 3;
do
INSERT INTO test
(var1 STRING, var2 STRING, var3 STRING)
SELECT var1 STRING, var2 STRING, var3 STRING
FROM test;
done;
但是没有用。
蚂蚁建议?
非常感谢
不需要循环。
演示
create table t (i int);
insert into t values (1),(2);
select * from t;
+----+
| i |
+----+
| 1 |
| 2 |
+----+
insert into t
select t.*
from t
lateral view explode(split(space(3-1),' ')) e
;
select * from t;
+----+
| i |
+----+
| 1 |
| 1 |
| 1 |
| 2 |
| 2 |
| 2 |
| 1 |
| 2 |
+----+
我目前正在研究 Hive,我想在现有的 table 中插入一个 n 倍于其内容的数字。
为了说明我想要什么:
我有一个 table test (var1 STRING, var2 STRING, var3 STRING) 例如 20 行。 我想在 table 中插入测试 20 行 n 次(例如 3 次,以便在我的循环结束时有 80 行)。
我试过这种请求:
for n in 1 3;
do
INSERT INTO test
(var1 STRING, var2 STRING, var3 STRING)
SELECT var1 STRING, var2 STRING, var3 STRING
FROM test;
done;
但是没有用。
蚂蚁建议? 非常感谢
不需要循环。
演示
create table t (i int);
insert into t values (1),(2);
select * from t;
+----+
| i |
+----+
| 1 |
| 2 |
+----+
insert into t
select t.*
from t
lateral view explode(split(space(3-1),' ')) e
;
select * from t;
+----+
| i |
+----+
| 1 |
| 1 |
| 1 |
| 2 |
| 2 |
| 2 |
| 1 |
| 2 |
+----+