Hallo,
Szenario ist:
Ich habe eine JMP-Tabelle: JMPCol1, JMPCol2, JMPCol3, JMPCol4, JMPCol5, JMPCol6 und MySQL-Datenbank: Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8. Ich möchte alle Zeilen einfügen: Insert INTO DB.Table (JMPCol1, JMPCol3, JMPCol7) Werte (Field2, Field4, Field1).
Ich habe online keine Beispiele dafür gesehen, wie es geht. Ein Vorschlag war, in csv zu speichern und dann eine Masseneinfügung vorzunehmen, aber wenn es eine direktere Möglichkeit gibt, dies zu tun ...
Vielen Dank.
Sieht aus, als hätte ich die JMP-Dataset- und MySQL-Spalten vertauscht, aber Sie haben die allgemeine Vorstellung.
Demzufolge Webseite Dies ist eine gültige Methode, um mehrere Werte in eine Tabelle in MySQL einzufügen:
INSERT INTO tableName
(column1,column2,column3,column4)
VALUES
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4');
Die Übersetzung in JSL würde also so aussehen:
dt = New Table( "Test MYSQL Insert",
Add Rows( 3 ),
New Column( "Field1", Character, "Nominal", Set Values( {"a", "b", "c"} ) ),
New Column( "Field2", Character, "Nominal", Set Values( {"d", "e", "f"} ) ),
New Column( "Field3", Character, "Nominal", Set Values( {"g", "h", "i"} ) ),
New Column( "Field4", Character, "Nominal", Set Values( {"l", "m", "n"} ) )
);
sql = "Insert INTO DB.Table (JMPCol1,JMPCol3,JMPCol7) values ";
for (i = 1, i <= nrows(dt), i++,
f2 = dt:Field2[i];
f4 = dt:field4[i];
f1 = dt:field1[i];
sql = sql || evalinsert(" ('^f2^', '^f4^', '^f1^'),");
);
// Remove the last comma
len = length(sql);
sql = substr(sql, 1, (len - 1));