JDBC, INSERT MULTIPLE записей, полученных из запроса, в другую таблицу - PullRequest
1 голос
/ 25 июля 2010

Мне нужно вставить несколько записей в базу данных MySQL одновременно. То, что я делаю, это SELECT на одной таблице из моего заявления с подготовленным заявлением. Что я должен сделать, это вставить эти результаты в одну другую временную таблицу.

String sqlquery = "select * from table1 where arg1 = ?";
PreparedStatement statement;
statement = con.prepareStatement(sql);


ArrayList<String>termlist = index.getTermList();
for (int i = 0; i < termlist.size(); i++) 
{
    String search = termlist.get(i);
    statement.setString(1,search);

    ResultSet rs1 = statement.executeQuery(); //
}

Эти наборы могут быть большими. Какой самый быстрый способ вставить этот ResultSet как-то в мою другую таблицу после каждой итерации?

Как передать этот набор результатов какой-то хранимой процедуре, если есть способ?

Ответы [ 2 ]

2 голосов
/ 25 июля 2010

Вы можете получить базу данных, которая сделает всю работу за вас:

INSERT INTO othertable
SELECT col1, col2 FROM table1
WHERE arg1 = ?

Таким образом, вам не нужно отправлять копию данных в базу данных, которая там уже существует.

0 голосов
/ 25 июля 2010

Вы можете выполнить один запрос, если передаете список значений параметров через запятую в хранимую процедуру и используете предложение IN (val1, val2, ...). Не уверен, что ограничение MySQL для длины предложения IN.

Вот реализация split .

...