2016-05-10 66 views
1

想知道是否可以在一個插入語句中完成以下內容?Vertica SQL在一條語句中插入多行

drop table analytics.bw_covariance_matrix; 
create table analytics.bw_covariance_matrix (
row int, 
x1 float, 
x2 float, 
x3 float 
); 

insert into analytics.bw_covariance_matrix VALUES 
(1, 4.01926965, -0.4686067, -0.07592112), 
insert into analytics.bw_covariance_matrix VALUES 
(2, -0.46860675, 4.1799267, -0.82461139); 
insert into analytics.bw_covariance_matrix VALUES 
(3, -0.07592112, -0.8246114, 4.37186211); 

回答

3

你可以UNION一個SELECT有一個單一的INSERT聲明:

insert into analytics.bw_covariance_matrix 
SELECT 1, 4.01926965, -0.4686067, -0.07592112 
UNION 
SELECT 2, -0.46860675, 4.1799267, -0.82461139 
UNION 
SELECT 3, -0.07592112, -0.8246114, 4.37186211 

我不相信,Vertica的具有多記錄像MySQL和其他RDBMS的插入語句,所以這是最好的選擇。

+2

這不是問題這一行數,但是UNION ALL會更快,因爲你在控制行並且不需要區分。 – kimbo305

1
insert into analytics.bw_covariance_matrix VALUES 
(1, 4.01926965, -0.4686067, -0.07592112), 
(2, -0.46860675, 4.1799267, -0.82461139), 
(3, -0.07592112, -0.8246114, 4.37186211); 

試試這個:

INSERT INTO analytics.bw_covariance_matrix 
SELECT row, x1, x2, x3 
FROM analytics.bw_covariance_matrix 
WHERE row IN (1,2,3) 
+1

這是否在Vertica中有效。我的理解是,Vertica不支持多記錄插入。 – JNevill

+0

啊.sorry錯過了Vertica。不,它不會工作,你需要將值合併。 – user6256515

+0

第一列是ID列嗎?如果是的話,你可能只是這樣做: INSERT INTO analytics.bw_covariance_matrix 選擇行,X1,X2,X3 FROM analytics.bw_covariance_matrix WHERE行(1,2,3) – user6256515