powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOraLoader
25 сообщений из 54, страница 2 из 3
TOraLoader
    #39838834
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorЛеонов Юрий,
По хорошему все должны рождаться с желанием и возможностями развиваться и учиться.
Может, рано ещё?

А я вопрос здесь и задал для того, чтобы понять возможности и принцип работы компоненты.
В официальном мануале практически ничего не сказано, кроме того что нужно определить одно из событий и вызвать метод Load.
И пойми как оно работает... Как коммиты ставятся и ставятся ли вообще.
В нете раскопал старый код
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TDALoader.Load; 
begin 
  if Columns.Count = 0 then 
    CreateColumns; 
  Prepare; 
  StartWait; 
  try 
    PutData; 
  finally 
    Finish; 
    StopWait; 
  end; 
end; 


Здесь один раз дергается одно из событий. Что человек, который только начал знакомиться с компонентом, должен понять ?
...
Рейтинг: 0 / 0
TOraLoader
    #39838842
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов Юрий,

Это кривой код...

Комитов при bulk load ,как таковых нету - это совсем другой механизм...
...
Рейтинг: 0 / 0
TOraLoader
    #39838843
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий, ну ты данные то "запутил" в БД? Обработчики событий (on...) написаны? что пишут? Контролируешь?
...
Рейтинг: 0 / 0
TOraLoader
    #39838851
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpub, другого кода у меня нету. Я не понимаю принципа. Вот в самом первом вашем посте был пример события onGetColumnData.
Если данных 10 тысяч строк, сколько раз выполнится это событие и почему? Можете растолковать?
...
Рейтинг: 0 / 0
TOraLoader
    #39838856
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов Юрийzinpub, другого кода у меня нету. Я не понимаю принципа. Вот в самом первом вашем посте был пример события onGetColumnData.
Если данных 10 тысяч строк, сколько раз выполнится это событие и почему? Можете растолковать?

onGetColumnData - выполняется до тех пор пока вы не определите Eof = True
...
Рейтинг: 0 / 0
TOraLoader
    #39838857
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий, при чем тут число строк?

https://www.devart.com/unidac/docs/devart.dac.tdaloader.ongetcolumndata.htm Write the OnGetColumnData event handler to put column values. TDALoader calls the OnGetColumnData event handler for each column in the loop. Column points to a TDAColumn object that corresponds to the current loading column. Use its Name or Index property to identify what column is loading. The Row parameter indicates the current loading record. TDALoader increments the Row parameter when all the columns of the current record are loaded. The first row is 1. Set EOF to True to stop data loading. Fill the Value parameter by column values. To start loading call the Load method.

Another way to load data is using the OnPutData event.
...
Рейтинг: 0 / 0
TOraLoader
    #39838859
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне было удобнее с PutData...

То есть логика такова:
Ты сам берёшь данные - откуда хочешь... из строки, стрима, файла, хоть рэндомом их генеришь
Передаешь компоненту
Он кладёт их в базу

Как только тебе надоело выходишь из процедуры...
...
Рейтинг: 0 / 0
TOraLoader
    #39838867
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubМне было удобнее с PutData...

То есть логика такова:
Ты сам берёшь данные - откуда хочешь... из строки, стрима, файла, хоть рэндомом их генеришь
Передаешь компоненту
Он кладёт их в базу

Как только тебе надоело выходишь из процедуры...
То есть командой
Код: pascal
1.
Sender.PutColumnData(2, FLineN, FLineN);


мы забиваем данные, а потом Load их пуляет по назначению? И после я сам вызываю коммит? Я правильно понял?
...
Рейтинг: 0 / 0
TOraLoader
    #39838868
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При установке ODAC по умолчанию устанавливаются и несколько демо проектов. Если вы откроете папку с Demo, то увидете там демо с названием OdacDemo. В этом демо есть и пример по работе с TOraLoader через GetColumnData и через PutData (исходники для демо по работе с TOraLoader находятся тут: OdacDemo\Loader\Loader.pas).
...
Рейтинг: 0 / 0
TOraLoader
    #39838871
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да сорри за опечатку, я имел ввиду PutData
...
Рейтинг: 0 / 0
TOraLoader
    #39838873
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devartПри установке ODAC по умолчанию устанавливаются и несколько демо проектов. Если вы откроете папку с Demo, то увидете там демо с названием OdacDemo. В этом демо есть и пример по работе с TOraLoader через GetColumnData и через PutData (исходники для демо по работе с TOraLoader находятся тут: OdacDemo\Loader\Loader.pas).

Да, я видел демку. По крайней мере смотрел код
...
Рейтинг: 0 / 0
TOraLoader
    #39838874
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов ЮрийzinpubМне было удобнее с PutData...

То есть логика такова:
Ты сам берёшь данные - откуда хочешь... из строки, стрима, файла, хоть рэндомом их генеришь
Передаешь компоненту
Он кладёт их в базу

Как только тебе надоело выходишь из процедуры...
То есть командой
Код: pascal
1.
Sender.PutColumnData(2, FLineN, FLineN);


мы забиваем данные, а потом Load их пуляет по назначению? И после я сам вызываю коммит? Я правильно понял?

Load и вызовет OnPutData... Пуляет данные PutColumnData.... Коммит "не нужен"(с)
...
Рейтинг: 0 / 0
TOraLoader
    #39838877
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zinpubLoad и вызовет OnPutData... Пуляет данные PutColumnData.... Коммит "не нужен"(с)

Спасибо огромное за разъяснения!
...
Рейтинг: 0 / 0
TOraLoader
    #39838882
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается рано обрадовался...
При вызове Load бьет ошибку "Direct path loading is not supported in Direct mode"
Основное требование заказчика при подключении к БД - никаких клиентов, только Direct...
Обойти как-то можно?
...
Рейтинг: 0 / 0
TOraLoader
    #39838923
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например промежуточный слой на сервере.
Да хоть бы веб-сервер. Получает файл/ы, распарсивает и заливает в базу. Уж на сервере то оракл-клиент скорее всего установлен.
...
Рейтинг: 0 / 0
TOraLoader
    #39838936
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леонов ЮрийОказывается рано обрадовался...
При вызове Load бьет ошибку "Direct path loading is not supported in Direct mode"
Основное требование заказчика при подключении к БД - никаких клиентов, только Direct...
Обойти как-то можно?

Нет
...
Рейтинг: 0 / 0
TOraLoader
    #39838937
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BulkLoad можно выполнить со стороны Pl/Sql из блоба или файла
...
Рейтинг: 0 / 0
TOraLoader
    #39838941
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийОказывается рано обрадовался...
При вызове Load бьет ошибку "Direct path loading is not supported in Direct mode"
Основное требование заказчика при подключении к БД - никаких клиентов, только Direct...
Обойти как-то можно?
Можно выбрать режим lmDML : https://www.devart.com/odac/docs/devart.odac.tloadmode.htm
...
Рейтинг: 0 / 0
TOraLoader
    #39838998
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devartМожно выбрать режим lmDML

а есть разница между imDML и серией INSERT'ов через dataset или query?
...
Рейтинг: 0 / 0
TOraLoader
    #39839049
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик СемёнdevartМожно выбрать режим lmDML
а есть разница между imDML и серией INSERT'ов через dataset или query?
В режиме lmDML используется вставка с помощью обычного INSERT, только параметры передаются как DML array (подробнее про DML arrays можно прочитать тут https://www.devart.com/odac/docs/work_dml.htm ). Режим lmDML у TOraLoader сделан для тех случаев, когда у кого-то реализована загрузка данных через TOraLoader, но в один прекрасный момент возникает необходимость работать в Direct режиме, в котором загрузка данных в режиме lmDirect не поддерживается. В этом случае достаточно переключить режим с lmDirect на lmDML и ничего не надо переписывать в своем приложении. Скорость загрузки данных в режиме lmDirect немного выше, чем в lmDML режиме, но разница в скорости столько мизерная, что можно ей можно принебречь и считать эти два режма полностью взаимозаменяемыми.
...
Рейтинг: 0 / 0
TOraLoader
    #39839273
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devartВ режиме lmDML используется вставка с помощью обычного INSERT, только параметры передаются как DML array.

Если я правильно понял, то в
Код: pascal
1.
Sender.PutColumnData(Col, Row, Value);

Value будет представлен как VarArray?
Или же как в примере делаем через OraSQL?
...
Рейтинг: 0 / 0
TOraLoader
    #39839294
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийЕсли я правильно понял, то в
Код: pascal
1.
Sender.PutColumnData(Col, Row, Value);

Value будет представлен как VarArray?
Или же как в примере делаем через OraSQL?
Нет, данные в PutColumnData вы заполняете одинаково в обоих режимах. В режиме lmDML компонент TOraLoader сам преобразует их в DML Array и в виде массива отправит на сервер.
...
Рейтинг: 0 / 0
TOraLoader
    #39839319
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
devartНет, данные в PutColumnData вы заполняете одинаково в обоих режимах. В режиме lmDML компонент TOraLoader сам преобразует их в DML Array и в виде массива отправит на сервер.

Тогда тоска... Миллион записей 10 минут гонял. За это же время SQLLoader загнал 20 лямов
...
Рейтинг: 0 / 0
TOraLoader
    #39839462
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов ЮрийЗа это же время SQLLoader загнал 20 лямов

Так надо же сравнивать в равных условиях. Снеси с машины клиент Oracle (в соответствии с
требованиями доступа без его установки) и посмотри как SQLoader выкрутится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TOraLoader
    #39839977
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЛеонов ЮрийЗа это же время SQLLoader загнал 20 лямов

Так надо же сравнивать в равных условиях. Снеси с машины клиент Oracle (в соответствии с
требованиями доступа без его установки) и посмотри как SQLoader выкрутится.


Так это без клиента и было сделано...
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TOraLoader
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]