Russian Qt Forum
Ноябрь 23, 2024, 15:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запись целой таблицы в бд  (Прочитано 3957 раз)
Danila_Bagrofff
Гость
« : Апрель 03, 2013, 12:57 »

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

Можно, конечно, в рамках сессии проинсертить каждую строку во временную #таблицу, а затем отработать

Для большого кол-ва данных было бы проще выполнить один инсерт с кучей данных в бд.

Подскажите.
Записан
carrygun
Гость
« Ответ #1 : Апрель 03, 2013, 13:02 »

Добавить данные с помющью транзакции. Можно составить один INSERT запрос с множеством VALUES. Можно еще посмотреть в сторону QSqlQuery::execBatch(), но в большинстве случаев он разворачивается в тупой цикл из INSERT'ов.
Записан
Bepec
Гость
« Ответ #2 : Апрель 03, 2013, 13:20 »

Не всегда разворачивается. Зависит от базы и драйвера Улыбающийся

А так да - используем множественные запросы, если поддерживается базой данный.
Или же используем много запросов в одной транзакции.
Записан
carrygun
Гость
« Ответ #3 : Апрель 03, 2013, 13:49 »

Не всегда разворачивается. Зависит от базы и драйвера Улыбающийся

А так да - используем множественные запросы, если поддерживается базой данный.
Или же используем много запросов в одной транзакции.
Там буквально один драйвер это умеет из коробки.
Записан
Bepec
Гость
« Ответ #4 : Апрель 03, 2013, 14:12 »

Незнаю точно Улыбающийся Потому и спорить не могу.
Записан
dio
Гость
« Ответ #5 : Апрель 03, 2013, 17:28 »

Еще парочка вариантов:
1. Разбить данные таблицы на пакеты (в виде XML или CSV) и реализовать процедуру массовой загрузки средствами СУБД.
2. Использовать специализированные инструменты загрузки данных (например SQL*Loader для Oracle RDBMS). 
Записан
Danila_Bagrofff
Гость
« Ответ #6 : Апрель 04, 2013, 10:20 »

Да, тоже стал смотреть в сторону xml...

Но наложенные платежи по парсингу все-таки великоваты...

Решил делать через временные таблицы в сессии...

Если кто-то натолкнется, то вот полезная статейка, найденная мной по этому поводу:
http://habrahabr.ru/post/96145/

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 21.