Форум "Delphi"
Паскаль, Делфи
Как лучше всего проапдейтить базу Firebird из XML-файла?В XML-файле хранятся данные по одной из таблиц базы. Этот набор легко грузится в Delphi-компоненту TClientDataset. Самое простое бежать по этому набору и апдейтить каждую запись (если нет - добавлять, если есть - заменять). Как вариант - можно сформировать сначала полный скрипт апдейта всех записей и "оптом" его передать серверу. Есть ли еще какие-то альтернативные и более правильные решения?
|
|
#1 Black 06.09.07 12:06:19
Ддоброе время суток! :) Можно попробовать использование компонента из RxLib TRxMemoryData. Сначала закинуть все данные в память и работать с ними как с таблицей, а потом загрузить их в TClientDataSet с помощью процедуры SaveToDataSet |
|
>#0 Deep © как я это дело вижу: надо сперва сделать запрос на выгрузку всей таблицы в клиент, потом по ним пробежаться на соответствие по описанному тобой принципу, а потом оптом их сохранить в базу. |
|
#3 Mystic © 06.09.07 13:46:46
Если данные, то залочить таблицу, отключить индексы, удалить все записи, вставить все, включить индексы, отлочить таблицу. |
|
>#3 Mystic © кстати да! нам же нужно заменить все существующие данные в таблице, так быстрее будет. но вдруг в энтой таблице есть данные, которых нет в файле - тогда как у Диипа. |
|
>#1 Black не совсем понятно для чего нужна TRxMemoryData? Я и без него нормально загружаю xml-файл в TClientDataset (что позволяет мне работать с данными как с таблицей). >#3 Mystic © удалять все записи из таблицы базы нельзя, в xml-файл может быть только часть данных, и только эту часть надо проапдейтить в базе. собственно, я так вижу здесь скорее вопрос в том как правильнее > оптом их сохранить в базу. Первый вариант я уже описывал -- загнать все изменения в ОДИН скрипт и выполнить его. второй... может это можно как-то сделать через механизм синхронизации баз? Firebird позволяет синхронизировать две базы. Может как-то можно синхронизировать базу и клиентский набор данных? |
Написать ответ |
|
