Быстрая вставка миллиона строк в MySQL, prepare,exec |
Здравствуйте, гость ( Вход | Регистрация )
Быстрая вставка миллиона строк в MySQL, prepare,exec |
VladimirPivovar |
18.9.2011, 11:46
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 18.9.2011 Пользователь №: 2883 Спасибо сказали: 0 раз(а) Репутация: 0 |
Решил написать алгоритм, который бы быстро вставлял в базу несколько сотен миллионов строк в MySQL
Пока остановился на том, чтобы проверить как вставляется несколько одинаковых строк в цикле:
Вместо (?,?,?,?,?) должны ведь подставляться строки 1234567891011 и т. д. однако при выполнении вываливается ошибка : "No data supplied for parameters in prepared statement" как побороть данную проблему? Сообщение отредактировал ViGOur - 6.10.2011, 14:40
Причина редактирования: не забываем про тэг code
|
|
|
ilyabvt |
18.9.2011, 17:14
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
query.exec() надо вызывать внутри цикла, а не после.
|
|
|
vadim303 |
6.10.2011, 11:51
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 14 Регистрация: 18.1.2010 Пользователь №: 1382 Спасибо сказали: 2 раз(а) Репутация: 0 |
query.exec() надо вызывать внутри цикла, а не после. в этом случае будут выполнены миллионы запросов, что не есть гуд. Я бы присмотрелся к методу QSqlQuery::execBatch(). В хелпе и пример доходчивый к нему есть. Возможно за один его вызов все сотни миллионов строк запихивать не хорошо получится, но партиями точно будет быстрее чем одиночными exec(). Ну а размер партий экспериментально определить... |
|
|
Гость_Гость_* |
14.12.2011, 12:12
Сообщение
#4
|
Гости |
Делаю обычно так:
не знаю инъекцией это называется вроде? а может путаю |
|
|
Svet |
10.1.2012, 12:03
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 4 Регистрация: 26.10.2011 Пользователь №: 2966 Спасибо сказали: 0 раз(а) Репутация: 0 |
Делаю обычно так:
не знаю инъекцией это называется вроде? а может путаю Это явно не инъекция. Думаю, так будет работать гораздо быстрее, чем вызывать каждый раз по одному запросу, но не уверен, что это будет самый быстрый способ. |
|
|
Текстовая версия | Сейчас: 26.12.2024, 0:37 |