Добрый день (или другое время суток)!
Есть проблема: нужно вставить в таблицу MySQL из Qt много записей (несколько миллионов), когда написал прогу оказалось, что QSqlQuery::execBatch() работает медленно будто вставляет не пакетом, а по одной записи. В документации написано, что если БД не поддерживает пакетную вставку, то действительно будет вставляться по одной записи. Я удивился, т.к. MySQL ПОДДЕРЖИВАЕТ пакетную вставку, из PHP с этим же сервером пакетная вставка отлично работает.
Но qDebug() << db.driver()->hasFeature(QSqlDriver::BatchOperations); действительно выдает ложь.
ВОПРОС: как заставить драйвер Qt MYSQL понять, что пакетная вставка поддерживается???
Очень не хочется собирать запрос как строку, т.к. при этом нужно экранировать спец. символы, и делать много ненужных движений.
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);
insert into table
(a,b,c)
values
(1,2,3),
(4,5,6),
...
(7,8,9);
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)