powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с большими таблицами
50 сообщений из 50, показаны все 2 страниц
Работа с большими таблицами
    #34174621
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте!
Подскажите может ктонибудь знает как лутше сделать. При написании программы мне необходимо сделать запрос к БД и выбрать около 500 тыс. строк из таблицы. Запрос выполняется быстро вот только оперативки седается порядка 100-200 Мб. Как сделать что бы он не всю таблицу тянул в память а только кусочек?
Пишу на Builder 6 C++, СУБД Oracle 9i.

На Сишарпе таккаяже ситуация?
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174642
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982выбрать около 500 тыс. строк из таблицы
А нафига?
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174655
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982не всю таблицу тянул в память а только кусочекэто правильно
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174670
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну просто нужно взять информацию из таблицы и сохранить её в файл с определённой структурой.
Стандартными средствами Оракла сделать не получается.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174740
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982 m> ну просто нужно взять информацию из таблицы и сохранить её
m> в файл с определённой структурой. Стандартными средствами
m> Оракла сделать не получаетсядак а в память грузить зачем ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174776
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну как я делаю ADOQuerry->Activite=true
и он начинает тянуть с БД все данные согласно запросу.
вот и вытягивает на 200 метров.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174796
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982 m> ну как я делаю ADOQuerry->Activite=true
m> и он начинает тянуть с БД все данные согласно запросу.может тип курсора покурить ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174810
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это как? и у курсора может быть 10 полей (ну столбцы в таблице).?
подскажите как ето можно сделать.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174816
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982А это как?клиентский курсор
BCB HelpTCustomADODataSet::CursorType
---
Specifies type of cursor an ADO dataset uses.

__property TCursorType CursorType = {read=GetCursorType, write=SetCursorType, default=2};

Description

Set CursorType to indicate the type of cursor the ADO dataset uses for the recordset when it is opened. CursorType must be set prior to activating the dataset component. Among other cursor aspects, CursorType affects directional scrolling through a recordset and the visibility of changes made by other users.

The default value of CursorType is ctKeyset.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174823
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
М.б. CursorLocation=clUseServer.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34174856
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо! попробую!
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175025
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982Здраствуйте!
Подскажите может ктонибудь знает как лутше сделать. При написании программы мне необходимо сделать запрос к БД и выбрать около 500 тыс. строк из таблицы. Запрос выполняется быстро вот только оперативки седается порядка 100-200 Мб. Как сделать что бы он не всю таблицу тянул в память а только кусочек?
Пишу на Builder 6 C++, СУБД Oracle 9i.

На Сишарпе таккаяже ситуация?

как тут сказали - мона курсор...
а мона и немного подругому...
если Вам нужно сканировать дейстивтельно в сети (видеть изменения в он-лайн) и наплевать на кол-во записей (хоть мульён, хоть тэра - пофигу)..при этом нормально работать а не задыхаться от нехватка памяти на серваке либо клиенте...то....
логика следующая...
Вводите понятие "опорная запись".
из этой опорной записи Вам нужно данные полей сортировки.
Далее сделать запрос на всё что меньше или равно (но не больше, скажем размер Вашего "окна")
Далее сделать запрос на всё что больше (но не больше размера Вашего "окна")
на клиенте получите желаемые данные, величиной от размера Вашего, до 2 размеров Вашего окна...всё...
алгоритм был успешно опробован на таких движках как Btrieve(фиксированное кол-во индексных полей), Oracle (произвольное кол-во индексных полей)...вообще оракл - вне всяких похвал... на ура такие задачи глотает...

с уважением
(круглый)
Автор методы - Гриценко А.В. год 1996 где то...
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175039
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чушь какая-то. Неужели в ADO нет нормального враппера курсора, который фетчит таблицу построчно.

Застрелюсь ей богу, если нету.

C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175096
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧушь какая-то. Неужели в ADO нет нормального враппера курсора, который фетчит таблицу построчно.

Застрелюсь ей богу, если нету.

C уважением
Lord Mayton


... and between Date XX.XX.XX and XX.XX.XX
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175097
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧушь какая-то. Неужели в ADO нет нормального враппера курсора, который фетчит таблицу построчно.

Застрелюсь ей богу, если нету.

C уважением
Lord Mayton


рекомендую глянуть изернет монитором то, что получает Ваша станция в этом случае..."Радость" админа будет полные штаны...таких клиентов штук 10...и ваши 100 мегабит приказали долго жить...правда нуна сказать, что фитч-фитчу рознь... но при попытки пройтись по полученному курсору - радости даст мало...

если не верите - гляньте сами..
с уважением
(круглый)
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175107
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart... and between Date XX.XX.XX and XX.XX.XX

поля дат не всегда существуют в таблицах...кстати..и кто сказал что нам нужно в порядке сортировки дат ????

с уважением
(круглый)
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175121
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 JibSkeart... and between Date XX.XX.XX and XX.XX.XX

поля дат не всегда существуют в таблицах...кстати..и кто сказал что нам нужно в порядке сортировки дат ????

с уважением
(круглый)

А никто , я предположительно пошутил :)
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34175847
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982При написании программы мне необходимо сделать запрос к БД и выбрать около 500 тыс. строк из таблицы.Ни в коем случае! Никогда не таскай на клиента такие большие выборки.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176323
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда! написано много но все теория и не одной сылки как ето сделать! все только говорят оооо!!!!!
Я сам понимаю что 500 тыс. много. Думал как сделать что бы "два окна" верх два в низ!
Вот только не придумал скажите как? или где можно про это почитать. Очень прошу мужики помогите.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176325
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
как тут сказали - мона курсор...
а мона и немного подругому...
если Вам нужно сканировать дейстивтельно в сети (видеть изменения в он-лайн) и наплевать на кол-во записей (хоть мульён, хоть тэра - пофигу)..при этом нормально работать а не задыхаться от нехватка памяти на серваке либо клиенте...то....
логика следующая...
Вводите понятие "опорная запись".
из этой опорной записи Вам нужно данные полей сортировки.
Далее сделать запрос на всё что меньше или равно (но не больше, скажем размер Вашего "окна")
Далее сделать запрос на всё что больше (но не больше размера Вашего "окна")
на клиенте получите желаемые данные, величиной от размера Вашего, до 2 размеров Вашего окна...всё...
алгоритм был успешно опробован на таких движках как Btrieve(фиксированное кол-во индексных полей), Oracle (произвольное кол-во индексных полей)...вообще оракл - вне всяких похвал... на ура такие задачи глотает...

с уважением
(круглый)
Автор методы - Гриценко А.В. год 1996 где то...

тоесть "данные полей сортировки" это уникальный индефикатор записи, ну в Оракле ROWID? или любое другое уникальное поле.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176460
Алексей3696
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не уверен что поможет, так как не работал ADOQuerry, но попробуй
что-то, типа этого (в TIBQuery т TFIBQuery работают корректно, по одной записи фитчат если не установлено свойство FeatchAll(или что то типа этого,не помню точно) )

DBQuery->SQL->Text=" select * ..."
DBQuery->ExecQuery(); // при извлечении запроса DBQuery втаёт на первую запись(если стоит ////..свойство перейти на первую запись при извлечении

while( !DBQuery->Eof)
{

int ABC=DBQuery->FieldByName("<мое поле1>")->AsInteger;
int DEF=DBQuery->FieldByName("<мое поле2>")->AsInteger;
// чё-то делаем и дописываем(сохраняем в) файл
DBQuery->Next();
}
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176481
Алексей3696
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но по большому счёту лучше не таскать данные с сервера такими большими кусками, это накладно как для сервака так и для клиента, но если уж сильно надо то можно попробовать так:
1) делать селект и сортировать по по индексированному уникальному полю (лучше всего целочисленному, но не обязательно)
например:
select first 1000 frоm MyBigTable order by УникальныйКлюч по возрастанию
2) выбрали всё что нужно, обработали сохранили в файл и запомнили последнее заначение поля УникальныйКлюч в переменной VAR
3) select first 1000 frоm MyBigTable where УникальныйКлюч>VAR order by УникальныйКлюч по возрастанию
4) повторять пока не ко п2 и п3 пока не выполница какое то условие или не кончятся записи в таблице

З.Ы. по моему всё таки этот вопрос больше в сторону SQL или как то к общим алгоритмам нежели к С++
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176494
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей3696TIBQuery т TFIBQueryэто 2 большие разницы
TIBQuery - обкновенный кэширующий датасет, но его можно перевести в режим UniDirectional, т.е. без кэширования записей.
TFIBQuery - аналог ибэиксовского IBSQL, т.е. грубо говоря обертка над АПИ.

твой же пример - для некэшируюшего датасета, которого в АДО нет (по-моему), в АДО аналогичная функциональность реализуется заданием типа курсора
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176506
Алексей3696
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но по большому счёту лучше не таскать данные с сервера такими большими кусками, это накладно как для сервака так и для клиента, но если уж сильно надо то можно попробовать так:
1) делать селект и сортировать по по индексированному уникальному полю (лучше всего целочисленному, но не обязательно)
например:
select first 1000 frоm MyBigTable order by УникальныйКлюч по возрастанию
2) выбрали всё что нужно, обработали сохранили в файл и запомнили последнее заначение поля УникальныйКлюч в переменной VAR
3) select first 1000 frоm MyBigTable where УникальныйКлюч>VAR order by УникальныйКлюч по возрастанию
4) повторять пока не ко п2 и п3 пока не выполница какое то условие или не кончятся записи в таблице

З.Ы. по моему всё таки этот вопрос больше в сторону SQL или как то к общим алгоритмам нежели к С++
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176513
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что будет делать человек с таким количеством данных ?
это же запаришся такой список просматривать
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176542
Алексей3696
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно,за 3 года мне такое не приходилось увидеть, но теоретически если это какая нибудь билинговая система или обработка статистики, где нибудь в центральном офисе... но я не думаю что реально понадобится 500 000, для сего тогда SQL,выборку придумали
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176599
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет эту информацию потом вгружают в другую БД автоматически. по сути ето перегон инф. из одной базы в другую. Другими методами невозможно осуществить!
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176602
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо! общий смысл расуждений я уловил! спасибо всем за подсказку!
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176761
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982нет эту информацию потом вгружают в другую БД автоматически. по сути ето перегон инф. из одной базы в другую. Другими методами невозможно осуществить!

тогда зачем все это тащить на клиента ?
неужели средсвами серверов сделать ?
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34176762
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... нельзя ?

(эт я забыл добаить)
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34177200
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет нельзя!там структура файла сложна да и должно работать на любом ПК в сети
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34177294
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афтор. Может тебе лучше сходить на форум к Ораклоидам и спросить про репликацию?

P.S. Засмеют ведь. С велосипедами.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34177670
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982....тоесть "данные полей сортировки" это уникальный индефикатор записи, ну в Оракле ROWID? или любое другое уникальное поле.

у Вас есть список, который Вы показываете клиенту...
предположим опорная запись - та, к которой привязан псевдо курсор списка...
предположим с верху Вашего списка распологаются наименование полей а так-же(!) направление и порядок сортировки некоторых, выбранных полей...

Тогда от опорной записи Вам необходимо те значения полей, по которым произведена сортировка (плюс некий уникальный, можно любой ID. Это служит для навигации по повторяющимся данным в полях сортировки). В сиквол запросе Вы указываете поля сортировки, условия соответствуют порядку сортировки, значения у Вас имеются (из опорной записи). Так же в сиквол запросе Вы можете попросить ВСЁ ЧТО МЕНЬШЕ, а так же ВСЁ ЧТО БОЛЬШЕ. При этом ограничить по кол-ву строк выборки. Ну предположим 200 строк.

Приимущества...
а) Вся работа по подготовке данных осуществляется там, где и положено - на серваке БД.
б) по сети гонятся только необходимые для визуализации на клиенте данные, а не все 500 мульёнов записей.
в) Клиент видит реальное положение ОН-ЛАЙН дел. Т.е. если какой то клиент удаляет в этот момент, то алгоритм честно отработает это удаление (апдэйт, вставку - не важно).

минусы...
1) технология. не простая, скажем так. особенно если сиквол запрос нагружаем доп. функционалом (подсветка полей, вычисление неких логических функций, циклические ссылки в таблицах)...
2) скорость. на данный момент времени есть опыт реализации на битриве (новелл сервак) по индексным полям (и их комбинаций не так много - конечно)... и на оракле без доп. индексации... Оракл замечательно справляется с задачей. На других движках - вряд ли осуществимо, т.к. они менее мощные...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34178451
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приходилось мне делать аналогичную выгрузку как из Oracle так и из MSSQL.
Работал через BDE, делал традиционно, перебирал все записи, можно for или while и в каждой записи перебирал все поля.
Сформированную строку направлял в другую БД или в файл, можно через потоки.
К полям обращаться лучше через s = s + Query1->Fields->Fields[j]->AsString, от этого зависит скорость работы. При этом скорость работы достаточно хорошая, зависит от сервера, сети и рабочей станции, чем шустрее тем лучше, проблем с перекодировкой не было.

Попробовал переделать на ADO, скорость работы значительно упала, пробовал менять тип курсора, другие параметры, но прежней скорости близко так и не достиг! Махнул рукой и оставил старый вариант через BDE.

Кстати в Oracle были свои способы выгрузки в текстовый файл, например SQL*Plus, после команды spool <filename>.<ext> и до set spool off, всё что буде на экране уйдёт в файл. Есть команды форматирования данных...

Удачи.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34178581
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982нет эту информацию потом вгружают в другую БД автоматически. по сути ето перегон инф. из одной базы в другую. Другими методами невозможно осуществить!Прямо таки невозможно? :)
Перегон информации из одной базы в другую делается на раз-два на самом деле. Из базы источника данные выгружаются в какой-либо универсальный формат. Например csv. Потом на пачку этих csv натравливается специальный конвертор (написаный на чем угодно, хоть С, хоть Perl) который их исходных csv представляющих таблицы старого формата делает новые csv с таблицами нового формата. Потом база получатель всасывает подготовленные csv. Это если БД получатель глупая :)
А если БД получатель умная, то база получатель напрямую подключается к базе источнику и обращаясь к таблицам источника как вьюшкам вытягивает и сразу конвертирует все нужные данные.
Клиентов при этом вообще нету. Не нужны они для этой задачи.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179004
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если задача перетянуть большие данные из одной БД в другую, то оптимальный вариант будет такой, запрос выбирает данные с сервака, порциями перегоняет клиенту, после каждой порции происходит фиксация данных. Таким способом можно перегонять практически неограниченный объём данных. Для Oracle в SQL*Plus есть функция copy from, которая всё это делает. Пользуюсь таким способом много лет, работает очень шустро, объёмы несколько GB, записей десятки миллионов, проблем нет. Если не делать промежуточные фиксации (commit), временное пространство значительно разбухает и т.д.
Если делать, что своё, разумнее использовать компоненты доступа специально заточенные под C++ и Oracle, например ODAC, процедура таже, копирование порциями...

Удачи.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179196
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо открыть ридонли курсор. В ODBC это проходит.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179203
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу спасибо за советы! про выгрузку! понимаете иногда боссы говорят что надо проводить обмен данными между двумя орагнизациями, онимежду собой договариваются, сочиняют как будет проходить выгрузка при это о том как это лутше сделать у знающих людей не кто не спрашивает. А потом дают вам тех задание, и вы думаете как лутше сделать. И что самое интересное те кто будет принемать инф. так же сидят и думаю о том как еЁ закачть в БД.

Ну всем спасибо за советы!и внимание!
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179209
kennethr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982нет эту информацию потом вгружают в другую БД автоматически. по сути ето перегон инф. из одной базы в другую. Другими методами невозможно осуществить!
Вы сами так считаете или кто-то подсказал? Во всех нормальных СУБД есть dblink, можно работать через sqlplus с csv. В любом случии такие действия на клиенте не делаются, потому как в рабочее время за такое голову сносят. ИМНО это прерогатива АБД.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179225
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kennethr mikola1982нет эту информацию потом вгружают в другую БД автоматически. по сути ето перегон инф. из одной базы в другую. Другими методами невозможно осуществить!
Вы сами так считаете или кто-то подсказал? Во всех нормальных СУБД есть dblink, можно работать через sqlplus с csv. В любом случии такие действия на клиенте не делаются, потому как в рабочее время за такое голову сносят. ИМНО это прерогатива АБД.

блин ну я же писал до этого почему так надо делать! меня просто порожает!
Почему все думают над условием задачи а не над решением еЁ?
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179265
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели , все таки , стандартными средствами Оракла нелзя выгрузить данные с определенной структурой ???
Неповерю ...
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179284
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeartНеужели , все таки , стандартными средствами Оракла нелзя выгрузить данные с определенной структурой ???
Неповерю ...

можно но первое файл будет лежать на сервере оракла (но ето не проблема) а второе нет знаний и времени. поетому приходится делать как получится
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179325
kennethr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982можно но первое файл будет лежать на сервере оракла (но ето не проблема) а второе нет знаний и времени. поетому приходится делать как получится

Тогда и огребете результат "какой получиться". 100-200 Мб для 500 тыс строк вполне нормально. Если уж так хочется создать exeшник для начала задумайтесь нужны ли вам согласованные данные. Oracle гарантирует это для одного запроса без блокировок. Можно попробовать использовать метод kolobok0 совместно с isolation_level=serializable. Иначе данные могут быть несогласованы.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179358
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982 JibSkeartНеужели , все таки , стандартными средствами Оракла нелзя выгрузить данные с определенной структурой ???
Неповерю ...

можно но первое файл будет лежать на сервере оракла (но ето не проблема) а второе нет знаний и времени. поетому приходится делать как получится

Так, вам и советуют как лучше , но я бы передачу из одного сервера на другой , реализовал бы на стороне серваков.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179676
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart mikola1982 JibSkeartНеужели , все таки , стандартными средствами Оракла нелзя выгрузить данные с определенной структурой ???
Неповерю ...

можно но первое файл будет лежать на сервере оракла (но ето не проблема) а второе нет знаний и времени. поетому приходится делать как получится

Так, вам и советуют как лучше , но я бы передачу из одного сервера на другой , реализовал бы на стороне серваков.

конечно это самое простое и верное решение былобы.

соглосованость данных не кретична.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179687
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982 JibSkeart mikola1982 JibSkeartНеужели , все таки , стандартными средствами Оракла нелзя выгрузить данные с определенной структурой ???
Неповерю ...

можно но первое файл будет лежать на сервере оракла (но ето не проблема) а второе нет знаний и времени. поетому приходится делать как получится

Так, вам и советуют как лучше , но я бы передачу из одного сервера на другой , реализовал бы на стороне серваков.

конечно это самое простое и верное решение былобы.

соглосованость данных не кретична.

"было бы" ???

Мешает только отсутвие знаний ?
и это вас остановило ?
ай-ай-ай !
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179736
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JibSkeart
"было бы" ???

Мешает только отсутвие знаний ?
и это вас остановило ?
ай-ай-ай !

нет останавливает нехватка времени и самое главное бумашка именуема "Соглашением"в которой описан формат выгружаемого файла.
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34179861
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хе-хе ...
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34180372
Goldminer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982
нет останавливает нехватка времени и самое главное бумашка именуема "Соглашением"в которой описан формат выгружаемого файла.
Формат, надеюсь, текстовый? Тогда в Oracle решается на раз-два на стороне сервера. Вопрос, конечно, не в этот форум, но примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE
  fh UTL_FILE.file_type;
BEGIN
  fh := UTL_FILE.fopen('MyPath', 'MyFile', 'w');
  FOR r IN (SELECT ...) LOOP
    UTL_FILE.put_line(fh, r.col1 || ';' || r.col2...);
  END LOOP;
  UTL_FILE.fclose(fh);
END;

Этот текст можно выполнить:
-- в sqlplus;
-- любым компонентом, к-рый позволяет выполнить произвольный DML,
-- (ИМХО, самое правильное) оформить в виде ХП и запускать одним из указанных способов.

PS: Чтобы разрешить Ораклу писать в 'MyPath' нужно в init.ora добавить параметр utl_file_dir с соотв. значением.
PPS: UTL_FILE
...
Рейтинг: 0 / 0
Работа с большими таблицами
    #34180447
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Goldminer mikola1982
нет останавливает нехватка времени и самое главное бумашка именуема "Соглашением"в которой описан формат выгружаемого файла.
Формат, надеюсь, текстовый? Тогда в Oracle решается на раз-два на стороне сервера. Вопрос, конечно, не в этот форум, но примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE
  fh UTL_FILE.file_type;
BEGIN
  fh := UTL_FILE.fopen('MyPath', 'MyFile', 'w');
  FOR r IN (SELECT ...) LOOP
    UTL_FILE.put_line(fh, r.col1 || ';' || r.col2...);
  END LOOP;
  UTL_FILE.fclose(fh);
END;

Этот текст можно выполнить:
-- в sqlplus;
-- любым компонентом, к-рый позволяет выполнить произвольный DML,
-- (ИМХО, самое правильное) оформить в виде ХП и запускать одним из указанных способов.

PS: Чтобы разрешить Ораклу писать в 'MyPath' нужно в init.ora добавить параметр utl_file_dir с соотв. значением.
PPS: UTL_FILE


РЕСПЕКТ тебе и уважуха!

Давно ето искал! Спаисбо!
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с большими таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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