CftClub.ru
Клуб специалистов ЦФТ-Банк

Загрузка TXT файла
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mourinjo
Участник со стажем


Вступление в Клуб: 21.12.2010
СообщениеПн Ноя 20, 2017 08:08   Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
Добрый день уважаемые гуру ИБСО! Скажите пжл есть ли предел по размеру загрузки TXT файла в ИБСО ? Скажем свыше 100 тыс записей ИБСО потянет ?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Ноя 20, 2017 09:10    Ответить с цитатой
Полезность: Нет оценки
смотря как операцию загрузки написать Wink
В общем случае потянет
или речь о какой-то конкретной операции ?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Ноя 20, 2017 09:54   Re: Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
Mourinjo пишет:
Добрый день уважаемые гуру ИБСО! Скажите пжл есть ли предел по размеру загрузки TXT файла в ИБСО ? Скажем свыше 100 тыс записей ИБСО потянет ?


потянет то он потянет
только долго грузить будет

если процесс периодический, лучше sql loader пользовать для этого,
создай какой-нибудь ТБП типа справочника и в него грузи.

70 000 записей грузил как-то, полминуты примерно
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Ноя 20, 2017 13:31   Re: Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Mourinjo пишет:
Добрый день уважаемые гуру ИБСО! Скажите пжл есть ли предел по размеру загрузки TXT файла в ИБСО ? Скажем свыше 100 тыс записей ИБСО потянет ?


потянет то он потянет
только долго грузить будет

если процесс периодический, лучше sql loader пользовать для этого,
создай какой-нибудь ТБП типа справочника и в него грузи.

70 000 записей грузил как-то, полминуты примерно


Если сделать внешнюю таблицу над текстовым файлом, то читать из такой таблицы можно будет со свистом. ~10000 в сек.
Ну да, при этом как раз SQL LOADER используется.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПн Ноя 20, 2017 16:17   Re: Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:

Если сделать внешнюю таблицу над текстовым файлом, то читать из такой таблицы можно будет со свистом. ~10000 в сек.
Ну да, при этом как раз SQL LOADER используется.


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

Для загрузки SQLLDR-ом не нужно "делать внешнюю таблицу", делается файл CTL с описанием структуры загружаемых данных и целевой таблицы для загрузки.
Mourinjo
Участник со стажем


Вступление в Клуб: 21.12.2010
СообщениеПн Ноя 20, 2017 21:29    Ответить с цитатой
Полезность: Нет оценки
Понятно, теперь ясно. Спасибо вам!
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеВт Ноя 21, 2017 06:10   Re: Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Эмиралька пишет:

Если сделать внешнюю таблицу над текстовым файлом, то читать из такой таблицы можно будет со свистом. ~10000 в сек.
Ну да, при этом как раз SQL LOADER используется.


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

Для загрузки SQLLDR-ом не нужно "делать внешнюю таблицу", делается файл CTL с описанием структуры загружаемых данных и целевой таблицы для загрузки.


Нет, я не путаю.
Я не люблю пользоваться CTL-файлами, у этого способа слишком много ограничений.
Для загрузки данных непосредственно в таблицу Oracle - требуется сделать CTL-файл. Прямая вкачка возможна только в таблицы без констрейнтов и индексов, или их нужно отключать, а потом восстанавливать. Всё это заморочки. Зачем крутить такой лес вокруг простого дела?

Я пишу о том, что чтобы прочитать файл, то есть получить массив с очередными например 10000 строк из файла, средствами stdio, будет затрачено 10 секунд, а средствами SQL LOADER - 1 секунда. Я пишу про внешние таблицы, потому что считаю их более гибкими, чем импорт с использованием CTL-файлов. Но и этими средствами тоже можно организовать табличку из одной строки, в которую будет импортированы строки файла.

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

Если известна структура файла, то разбор каждой строки может осуществляться лоадером автоматически (но для этого нужно сделать соответствующую внешнюю таблицу или соответствующую таблицу oracle + ctl-файл).

Чтобы сделать внешнюю таблицу с нужной структурой, потребуется та же информация, которая нужна для ctl-файла. То есть жёстко сгенерированный CTL-файл можно выкинуть. Не потребуется средство для его генерации, не потребуется вмешательство человека, чтобы выложить файл в нужно место, продукт обретает дополнительную гибкость.
После создания внешней таблицы очень просто сделать insert into table from external_table, и это занимает не намного больше времени, чем прямая вкачка. Собственно, это действие аналогично переносу данных из таблицы oracle, в которую осуществляется импорт через ctl-файл.

Что-то много наговорила, надеюсь, я не запуталась и вас не запутала.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеВт Ноя 21, 2017 07:41    Ответить с цитатой
Полезность: Нет оценки
С внешней таблицей не обойтись же без pl/sql вставки ?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Ноя 21, 2017 09:50   Re: Загрузка TXT файла Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:

Нет, я не путаю.
Я не люблю пользоваться CTL-файлами, у этого способа слишком много ограничений.
.......
Я пишу о том, что чтобы прочитать файл, то есть получить массив с очередными например 10000 строк из файла, средствами stdio, будет затрачено 10 секунд, а средствами SQL LOADER - 1 секунда. Я пишу про внешние таблицы, потому что считаю их более гибкими, чем импорт с использованием CTL-файлов.


Но и этими средствами тоже можно организовать табличку из одной строки, в которую будет импортированы строки файла.



Да !

я, в принципе, примерно так и делал - как бы "временный" ТБП куда быстро грузятся строки из файла SQLLDR-ом, потом внутри ЦФТ операшкой быстро разбираются, т.к. через FIO/stdio приемлемо где то до 3 -5 тыс. строк грузить и разбирать, дальше тормоза
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеВт Ноя 21, 2017 12:16    Ответить с цитатой
Полезность: 1
Alkov пишет:
С внешней таблицей не обойтись же без pl/sql вставки ?


rtl.execute_sql + utils.open_cursor Very Happy
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеЧт Ноя 23, 2017 16:32    Ответить с цитатой
Полезность: Нет оценки
Тоже сначала грузил csv файл ~ 100 млн.записей средствами ИБСО через stdio. Уходило где то часов 6 на это. SQLLDR грузит за час с копейками. В SQLLDR еще можно ускорить (режим загрузки без сохранения данных в архивлоги). Но у нас он не примением, т.к. настроен "горячий" бэкап. Но час на 100 млн.записей тоже норм.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Ноя 23, 2017 17:20    Ответить с цитатой
Полезность: Нет оценки
Gobur пишет:
Тоже сначала грузил csv файл ~ 100 млн.записей средствами ИБСО через stdio. Уходило где то часов 6 на это. SQLLDR грузит за час с копейками. В SQLLDR еще можно ускорить (режим загрузки без сохранения данных в архивлоги). Но у нас он не примением, т.к. настроен "горячий" бэкап. Но час на 100 млн.записей тоже норм.

а ты когда грузил sqlldr, параллельность включал ?

Usage: SQLLOAD keyword=value [,keyword=value,...]

parallel — do parallel load (Default FALSE)
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеПт Ноя 24, 2017 11:07    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Gobur пишет:
Тоже сначала грузил csv файл ~ 100 млн.записей средствами ИБСО через stdio. Уходило где то часов 6 на это. SQLLDR грузит за час с копейками. В SQLLDR еще можно ускорить (режим загрузки без сохранения данных в архивлоги). Но у нас он не примением, т.к. настроен "горячий" бэкап. Но час на 100 млн.записей тоже норм.

а ты когда грузил sqlldr, параллельность включал ?

Usage: SQLLOAD keyword=value [,keyword=value,...]

parallel — do parallel load (Default FALSE)

нет, не включал. Есть прибавка в скорости?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Ноя 24, 2017 14:15    Ответить с цитатой
Полезность: Нет оценки
не знаю, у тебя хотел спросить Smile
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПн Ноя 27, 2017 09:23    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
не знаю, у тебя хотел спросить Smile

А у меня периодически вылазит ошибка распараллеливания, так что хинт parallel я больше не использую. Ну его, я лучше файлы распилю.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru