Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Delphi"


Паскаль, Делфи


 #0 Deep © 06.09.07 00:38:23 - 07.09.07 05:51:25

Как лучше всего проапдейтить базу Firebird из XML-файла?



В XML-файле хранятся данные по одной из таблиц базы. Этот набор легко грузится в Delphi-компоненту TClientDataset. Самое простое бежать по этому набору и апдейтить каждую запись (если нет - добавлять, если есть - заменять). Как вариант - можно сформировать сначала полный скрипт апдейта всех записей и "оптом" его передать серверу.

Есть ли еще какие-то альтернативные и более правильные решения? Цитата

 #1 Black 06.09.07 12:06:19

Ддоброе время суток! :) Можно попробовать использование компонента из RxLib TRxMemoryData. Сначала закинуть все данные в память и работать с ними как с таблицей, а потом загрузить их в TClientDataSet с помощью процедуры SaveToDataSet
 #2 Паша © 06.09.07 13:42:23

>#0 Deep  ©

как я это дело вижу: надо сперва сделать запрос на выгрузку всей таблицы в клиент, потом по ним пробежаться на соответствие по описанному тобой принципу, а потом оптом их сохранить в базу.
 #3 Mystic © 06.09.07 13:46:46

Если данные, то залочить таблицу, отключить индексы, удалить все записи, вставить все, включить индексы, отлочить таблицу.
 #4 Паша © 06.09.07 14:08:42

>#3 Mystic  ©

кстати да! нам же нужно заменить все существующие данные в таблице, так быстрее будет. но вдруг в энтой таблице есть данные, которых нет в файле - тогда как у Диипа.
 #5 Deep © 07.09.07 05:51:25

>#1   Black
не совсем понятно для чего нужна TRxMemoryData? Я и без него нормально загружаю xml-файл в TClientDataset (что позволяет мне работать с данными как с таблицей).

>#3   Mystic ©
удалять все записи из таблицы базы нельзя, в xml-файл может быть только часть данных, и только эту часть надо проапдейтить в базе.  

собственно, я так вижу здесь скорее вопрос в том как правильнее > оптом их сохранить в базу.
Первый вариант я уже описывал -- загнать все изменения в ОДИН скрипт и выполнить его.

второй... может это можно как-то сделать через механизм синхронизации баз? Firebird позволяет синхронизировать две базы. Может как-то можно синхронизировать базу и клиентский набор данных?




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов