2016-05-10 4 views
1

Frage mich, ob es möglich ist die folgende in einer Insert-Anweisung zu erreichen?Vertica SQL einfügen mehrere Zeilen in einer Anweisung

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); 

Antwort

3

Sie könnten UNION eine SELECT eine einzige INSERT Aussage haben:

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 

Ich glaube nicht, dass Vertica ein Multi hat Record-Anweisung wie MySQL und andere RDBMS, so ist dies die beste Wette.

+2

Nicht, dass es für diese Anzahl von Zeilen zählt, aber UNION ALL wäre schneller, da Sie die Kontrolle über die Zeilen haben und nicht unterscheiden müssen. – 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); 

Versuchen Sie stattdessen:

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

Funktioniert das in Vertica. Ich verstehe, dass Vertica Multi-Record-Insert nicht unterstützt. – JNevill

+0

ah .sorry verpasste es für Vertica. Nein, es wird nicht funktionieren, Sie müssen stattdessen die Werte zusammenführen. – user6256515

+0

Ist die erste Spalte eine ID-Spalte? wenn so könnte man einfach tun: INSERT INTO analytics.bw_covariance_matrix SELECT Reihe, x1, x2, x3 VON analytics.bw_covariance_matrix WHERE Reihe IN (1,2,3) – user6256515