こんにちは、
シナリオは以下のとおりです。
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)を挿入します。
オンラインでそれを行う方法の例は見たことがありません。1つの提案は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));