[QT4] Быстрая загрузка структурированного текстового/XML-файла в БД
Но первая задача по идее вообще должна решаться в пару строк (ведь структуры подобны).Вообще один xml — куча таблиц в реляционной СУБД с неоднозначным маппингом.
Т.ч. если нужна автоматизация, то нужно что-то вроде ORM.
Собственно для xml-файла это можно сделать, запросами выбирая данные только по 1 таблице.
А для текстовика - 1 регексп на таблицу.
По крайней мере без учёта связей.
Т.ч. если нужна автоматизация, то нужно что-то вроде ORM.
Спасибо за вариант, но мне пока так сложно не нужно.
Думаю вообще пока варианта 1 файл - 1 таблица хватит.
исходя из того что файлы большие (а иначе что ускоряем? я бы предложил:
1) в случае XML - ни в коем случае его не DOMить, а использовать строго SAX;
2) в случае CSV - импортить прямо из sqlite (смотри на .import и .separator)
3) в обоих случаях - перед импортом или вставкой правильно установить всякие PRAGMA (отключить журнал, увеличить кэш, изменить locking_mode на EXCLUSIVE и т.п.) - это всё легко гуглится по словам "sqlite bulk import" или "sqlite bulk insert"
p.s. или "быстрая" относилось к разработке? тогда я пас
в случае CSV - импортить прямо из sqlite (смотри на .import и .separator)Мне кажется под структурированным текстовым файлом понимается human-readable формат, т.е. без хорошего парсера не обойтись.
в нашем орме это в пару кликов делается.
Оставить комментарий
durka82
Разбираюсь с импортом в БД (in memory SQLite) текстовых и xml-файлов в QT4, и как-то примеры в хелпе, статьях и книгах ориентированы под конкретные, но под какие-то другие, задачи, а под свои как-то не нашёл (ну или запрос не смог сформулировать правильно).1. Как быстро загрузить данные из xml в БД?
2. То же для структурированного текстового файла.
Понятно, что можно разобрать всё вручную по полям, а потом так же по полям вставить в БД.
Но первая задача по идее вообще должна решаться в пару строк (ведь структуры подобны).
А вторая должна аналогично решаться после применения к текстовику регэкспов.
Подскажите хотя бы какие классы/методы смотреть, а лучше правильные примеры/туториалы/книги.