У меня есть клиентское приложение Java 7, которое должно вставить большое количество небольших данных (несколько столбцов) в базу данных. База данных (Mysql 5.6) находится на моем сервере. Приложение Java на стороне клиента вызывает хранимую процедуру в цикле для вставки одной строки. Строка проста, выглядит так:Mysql, вставляющий несколько строк с одной вставкой
int | int | varchar | varchar | int | Дата и время
и текущий путь я делаю это так (псевдо-код):
try(DbConnection conn = new DbConnection()) {
for(RowModel model : rowModel) {
//inserting row here
}
}
catch(SqlException e) {
//process exception...
}
Как вы можете видеть, я буду открывать соединение один раз и я вставить строку за строкой. «rowModel» может иметь тысячи строк, и мне кажется, что было бы разумнее отправить 1 «LongText» в хранимую процедуру mysql, которая каким-то образом ограничит этот длинный текст подходящим для одного вызова «вставки».
Возможно ли и как? Что вы предлагаете?
Итак, в принципе, чтобы суммировать вещи: 1) есть ли какое-либо преимущество при вызове одной «вставки» с большим количеством значений вместо «для каждого» на стороне клиента? 2) Как я могу написать свою хранимую процедуру, поэтому требуется один большой текст и вставляет его с помощью одной команды «INSERT»?
Вы можете «вставлять в значения t (col1, col2)» (1,2), (3,4), (5,6) »или просматривать подсказки для вставки BULK: http s: //dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html –
Имеются соответствующие преимущества производительности при вставке с большим количеством значений .. вы выполняете только команду вместо многих команд, подобных вашим строкам .. – scaisEdge
@scaisEdge, который может быть ответом, если вы положите его ниже. Баллы славы и удачи. – Drew