Salut,
Le scénario est:
J'ai une table JMP: JMPCol1, Base de données JMPCol2, JMPCol3, JMPCol4, JMPCol5, JMPCol6 et MySQL: Champ1, Champ2, Champ3, Champ4, Champ5, Champ6, Champ7, Champ8. Je veux faire insérer toutes les lignes: Insert INTO DB.Table (JMPCol1, JMPCol3, JMPCol7) valeurs (Field2, Field4, Field1).
Je n'ai vu aucun exemple en ligne sur la façon de le faire. Une suggestion était de sauvegarder dans CSV puis de faire une insertion en masse, mais s’il existe un moyen plus direct de le faire ...
Merci.
On dirait que j'ai inversé les colonnes JMP et MySQL, mais vous avez une idée générale.
Selon ce site Internet c'est un moyen valable pour insérer plusieurs valeurs dans une table dans MySQL:
INSERT INTO tableName
(column1,column2,column3,column4)
VALUES
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4');
Donc, traduire cela en JSL ressemblerait à ceci:
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));