[QT4] Быстрая загрузка структурированного текстового/XML-файла в БД

durka82

Разбираюсь с импортом в БД (in memory SQLite) текстовых и xml-файлов в QT4, и как-то примеры в хелпе, статьях и книгах ориентированы под конкретные, но под какие-то другие, задачи, а под свои как-то не нашёл (ну или запрос не смог сформулировать правильно).
1. Как быстро загрузить данные из xml в БД?
2. То же для структурированного текстового файла.
Понятно, что можно разобрать всё вручную по полям, а потом так же по полям вставить в БД.
Но первая задача по идее вообще должна решаться в пару строк (ведь структуры подобны).
А вторая должна аналогично решаться после применения к текстовику регэкспов.
Подскажите хотя бы какие классы/методы смотреть, а лучше правильные примеры/туториалы/книги.

mbolik1

Но первая задача по идее вообще должна решаться в пару строк (ведь структуры подобны).
Вообще один xml — куча таблиц в реляционной СУБД с неоднозначным маппингом.
Т.ч. если нужна автоматизация, то нужно что-то вроде ORM.

durka82

А если на уровне 1 файл соответствует 1-й таблице?
Собственно для xml-файла это можно сделать, запросами выбирая данные только по 1 таблице.
А для текстовика - 1 регексп на таблицу.
По крайней мере без учёта связей.
Т.ч. если нужна автоматизация, то нужно что-то вроде ORM.

Спасибо за вариант, но мне пока так сложно не нужно.
Думаю вообще пока варианта 1 файл - 1 таблица хватит.

ava3443

непонятно причем тут QT4
исходя из того что файлы большие (а иначе что ускоряем? я бы предложил:
1) в случае XML - ни в коем случае его не DOMить, а использовать строго SAX;
2) в случае CSV - импортить прямо из sqlite (смотри на .import и .separator)
3) в обоих случаях - перед импортом или вставкой правильно установить всякие PRAGMA (отключить журнал, увеличить кэш, изменить locking_mode на EXCLUSIVE и т.п.) - это всё легко гуглится по словам "sqlite bulk import" или "sqlite bulk insert"
p.s. или "быстрая" относилось к разработке? тогда я пас :)

mbolik1

в случае CSV - импортить прямо из sqlite (смотри на .import и .separator)
Мне кажется под структурированным текстовым файлом понимается human-readable формат, т.е. без хорошего парсера не обойтись.

kill-still

в нашем орме это в пару кликов делается. :)
Оставить комментарий
Имя или ник:
Комментарий: