crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Пакетная вставка в MySQL
Румата Эсторский
  опции профиля:
сообщение 18.3.2011, 12:56
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 2.2.2011
Пользователь №: 2388

Спасибо сказали: 0 раз(а)




Репутация:   0  


Добрый день (или другое время суток)!

Есть проблема: нужно вставить в таблицу MySQL из Qt много записей (несколько миллионов), когда написал прогу оказалось, что QSqlQuery::execBatch() работает медленно будто вставляет не пакетом, а по одной записи. В документации написано, что если БД не поддерживает пакетную вставку, то действительно будет вставляться по одной записи. Я удивился, т.к. MySQL ПОДДЕРЖИВАЕТ пакетную вставку, из PHP с этим же сервером пакетная вставка отлично работает.
Но qDebug() << db.driver()->hasFeature(QSqlDriver::BatchOperations); действительно выдает ложь.

ВОПРОС: как заставить драйвер Qt MYSQL понять, что пакетная вставка поддерживается???
Очень не хочется собирать запрос как строку, т.к. при этом нужно экранировать спец. символы, и делать много ненужных движений.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 19.3.2011, 10:41
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


1) открыть транзакцию
2) в цикле вставить, причём можно вставлять сразу по 100 (к примеру) записей за запрос - синтаксис известен
http://phpclub.ru/mysql/doc/insert.html

insert into table
(a,b,c)
values
(1,2,3),
(4,5,6),
...
(7,8,9);

3) коммит

попробуй :)

Сообщение отредактировал Алексей1153 - 19.3.2011, 10:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 2:22