Hola,
El escenario es:
Tengo una tabla JMP: JMPCol1, JMPCol2, JMPCol3, JMPCol4, JMPCol5, JMPCol6 y bases de datos MySQL: Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8. Quiero hacer insertar todas las filas: insertar valores INTO DB.Table (JMPCol1, JMPCol3, JMPCol7) (Field2, Field4, Field1).
No he visto ningún ejemplo en línea sobre cómo hacerlo. Una sugerencia fue guardar en csv y luego hacer un inserto masivo, pero si hay una forma más directa de hacerlo ...
Gracias.
Parece que invirtí el conjunto de datos JMP y las columnas de MySQL, pero entiendes la idea general.
De acuerdo a esto sitio web esta es una forma válida de insertar múltiples valores en una tabla en MySQL:
INSERT INTO tableName
(column1,column2,column3,column4)
VALUES
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4');
Así que traducir eso a JSL sería algo como esto:
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));