嗨,
场景是:
我有一个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));