Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

Сбросить данные из таблицы в файл.   Найти похожие ветки 

 
S@shka ©   (2006-05-17 18:31) [0]

Народ есть вот какая задача.

1. Данные из большой таблицы сбросить в файл.
2. Файл перенести.
3. Окрыть и вставить эти данные в другую таблицу.

Делаю это через TIBClientDataSet (пока что):
open;
savetofile ();
- все получается но в процессе выполнения запроса select(данных много) приложение расходует много оп. памяти до 100 мб.
соответственно тормоза!

Второй вариант сделать тоже самое через IBSQL.BatchOutput - тут все здорово - данные методично отправляются в файл (память расходуется разумно) но я при обработке данных на приемнике несколько меняю запрос insert ((

Т.к. на второй стороне я  открываю IBClientDataset и "шагаю" по ней мне было удобно чтобы на этапе select IBClientDataset тоже бы сбрасывал данные методично сразу в файл.

Можно ли этого как то добиться?
Или мож я вообще не тем путем иду?


 
Desdechado ©   (2006-05-17 18:36) [1]

тебе это регулярно делать или разово?
проще выгрузить в скрипт, а потом скриптогонялкой выполнить его на другой базе


 
S@shka ©   (2006-05-17 18:39) [2]

Под скриптом имеется ввиду?
Сделать select и данные сохранить в ввиде текстового файла
insert ... into ... values ... ;
commit;

???

Так это тож самое что BatchOutPut сделать ?


 
Desdechado ©   (2006-05-17 18:55) [3]

ты не ответил на первый вопрос

а скрипт можнос конструировать уже так, чтоб не нужно было "на приемнике несколько меняю запрос insert"
тогда и грузить в CDS смысла не будет


 
S@shka ©   (2006-05-17 18:56) [4]

)))
Отвечаю на первый вопрос -
это делается редко.
Но надо большим массивом данных


 
atruhin ©   (2006-05-17 19:29) [5]

Ну так используй Query а вывод в файл формируй сам как нужно, это несколько строк кода.
При вставке построчно читаешь файл и обновляешь базу, будет медленней зато без расхода памяти.


 
atruhin ©   (2006-05-17 19:34) [6]


> [1] Desdechado ©   (17.05.06 18:36)

Вообще я бы при выгрузке формировал не набор опраторов insert, а запрос на вставку, и список параметров, так как при выполнении скрипта (т.е. в операторе insert константы) запрос будет каждый раз компилироваться и вычисляться план, что может быть гораздо медленнее, в разы.


 
S@shka ©   (2006-05-17 19:39) [7]


> Ну так используй Query а вывод в файл формируй сам как нужно,
>  это несколько строк кода.
> При вставке построчно читаешь файл и обновляешь базу, будет
> медленней зато без расхода памяти.

Как в этом случае интерпретировать NULL значения?


 
atruhin ©   (2006-05-17 19:44) [8]

Так и пиши в текстовый файл как NULL, строки квотированные, если одна строка - одна запись, не забыть заменить #13#10, я делал подобное для экспорта, работает нежалуюсь :)


 
atruhin ©   (2006-05-17 19:47) [9]

Очень удобная библиотека для быстрого квотирования, замены управляющих символов, парсинга есть на сайте Alex Konshin модуль называется StringConv лет 5 пользуюсь.


 
Sergey13 ©   (2006-05-18 09:04) [10]

2S@shka ©   (17.05.06 18:31)
Можно попробовать через внешнюю таблицу перегнать.


 
S@shka ©   (2006-05-18 23:50) [11]

А вот странно - я все таки решил
делать через
IBSQL.BatchInput(F:TIBInputRawFile)

только вот не пойму
открываю я транзакцию
стартую процесс
после окончания закрываю транзакцию

а если много  данных вливается до 1.000.000 записей
там ведь (в исходнике реализации BatchInput) - нет периодического подтверждения транзакции?

Это нормлаьно?


 
Petr V. Abramov ©   (2006-05-19 01:26) [12]

если таблица большая, лучше использовать внешние таблицы FB. И быстро, и программирования меньше



Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
15-1150880370
Layner
2006-06-21 12:59
2006.07.23
Отправка SMS от любого номера


6-1142431139
RzCoDer
2006-03-15 16:58
2006.07.23
Перехват пакетов


15-1151307292
worldmen
2006-06-26 11:34
2006.07.23
Excel. Программно окрасить ячейки.


2-1151750298
KaLLeKa
2006-07-01 14:38
2006.07.23
Как получить имя файла БЕЗ расширения?


2-1151858843
МишаК
2006-07-02 20:47
2006.07.23
панель задач