Russian Qt Forum

Qt => Базы данных => Тема начата: Danila_Bagrofff от Апрель 03, 2013, 12:57



Название: Запись целой таблицы в бд
Отправлено: Danila_Bagrofff от Апрель 03, 2013, 12:57
Подскажите, мне нужно передать целую таблицу данных в базу данных.

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

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

Подскажите.


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


Название: Re: Запись целой таблицы в бд
Отправлено: Bepec от Апрель 03, 2013, 13:20
Не всегда разворачивается. Зависит от базы и драйвера :)

А так да - используем множественные запросы, если поддерживается базой данный.
Или же используем много запросов в одной транзакции.


Название: Re: Запись целой таблицы в бд
Отправлено: carrygun от Апрель 03, 2013, 13:49
Не всегда разворачивается. Зависит от базы и драйвера :)

А так да - используем множественные запросы, если поддерживается базой данный.
Или же используем много запросов в одной транзакции.
Там буквально один драйвер это умеет из коробки.


Название: Re: Запись целой таблицы в бд
Отправлено: Bepec от Апрель 03, 2013, 14:12
Незнаю точно :) Потому и спорить не могу.


Название: Re: Запись целой таблицы в бд
Отправлено: dio от Апрель 03, 2013, 17:28
Еще парочка вариантов:
1. Разбить данные таблицы на пакеты (в виде XML или CSV) и реализовать процедуру массовой загрузки средствами СУБД.
2. Использовать специализированные инструменты загрузки данных (например SQL*Loader для Oracle RDBMS). 


Название: Re: Запись целой таблицы в бд
Отправлено: Danila_Bagrofff от Апрель 04, 2013, 10:20
Да, тоже стал смотреть в сторону xml...

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

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

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