Ciao,
Lo scenario è:
Ho una tabella JMP: JMPCol1, JMPCol2, JMPCol3, JMPCol4, JMPCol5, JMPCol6 e database MySQL: Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8. Voglio inserire tutte le righe: Inserisci valori INTO DB.Table (JMPCol1, JMPCol3, JMPCol7) (Field2, Field4, Field1).
Non ho visto nessun esempio online su come farlo. Un suggerimento era quello di salvare in csv quindi fare un inserto di massa, ma se c'è un modo più diretto di farlo ....
Grazie.
Sembra che ho invertito il set di dati JMP e le colonne MySQL, ma hai un'idea generale.
Secondo questo sito web questo è un modo valido per inserire più valori in una tabella in MySQL:
INSERT INTO tableName
(column1,column2,column3,column4)
VALUES
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4');
Quindi tradurre questo in JSL sarebbe qualcosa del genere:
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));