嗨,
場景是:
我有一個JMP表:JMPCol1, JMPCol2,JMPCol3,JMPCol4,JMPCol5,JMPCol6和MySQL數據庫:Field1,Field2,Field3,Field4,Field5,Field6,Field7,Field8。我想插入所有行:插入INTO DB.Table(JMPCol1,JMPCol3,JMPCol7)值(Field2,Field4,Field1)。
我沒有在網上看到任何關於如何做的例子。一個建議是保存到csv然後做一個批量插入,但如果有更直接的方式來做....
謝謝。
看起來我顛倒了JMP數據集和MySQL列,但是你得到了一般的想法。
根據這個網站這是在MySQL中向表中插入多個值的有效方法:
INSERT INTO tableName
(column1,column2,column3,column4)
VALUES
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4'),
('value1' , 'value2', 'value3','value4');
因此,將其轉換為JSL將是這樣的:
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));