:: Не фоксом единым
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
ВладимирС
Просто ради интереса, загрузка sqlldr с машины клиента идет или все перекинуто на сервер оракла и там запускается sqlldr ?
Самостоятельно ни разу не грузил. Спрошу у тех, кто это делал.
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
У sqlldr куча разных опций и настроек, плюс к тому есть 2 основных режима загрузки - Conventional и Direct Path - различающихся кардинально.

На сколько понимаю, "Direct Path" должен работать быстрее. Он всегда будет работать быстрее, или только в каких то определённых случаях?

На docs.oracle.com сказано:

Цитата:
To start SQL*Loader in direct path load mode, set the DIRECT parameter to true on the command line or in the parameter file, if used, in the format:
DIRECT=true

У нас используется такой ctl:

load data
infile "list_of_expired_passports.csv"
truncate
into table paspnotinuse
FIELDS TERMINATED BY "\t"
trailing nullcols
(ser_num "replace(:ser_num,',','' ) ",
prim CONSTANT 'Официальный сайт ФМС России',
type CONSTANT 'O',
dateload sysdate
)

На сколько вижу, в нём нет "DIRECT=true". Уточню - может указывали в командной строке.
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
На сколько вижу, в нём нет "DIRECT=true". Уточню - может указывали в командной строке.
Можешь не напрягаться.
У гениев запихивающих для каждой из 100М "строк" о серии/номере паспорта ещё и строку 'Официальный сайт ФМС России' и текущую дату... Лучше вообще ничего не спрашивать - а то покусают вдруг и станешь таким же как они


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
В теме (в redmin-е) описал своё видение, задал коллегам несколько вопросов - тишина. Подошёл, поговорил. В общем, они пока думают - что же им на самом деле надо...
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
Можешь не напрягаться.
У гениев запихивающих для каждой из 100М "строк" о серии/номере паспорта ещё и строку 'Официальный сайт ФМС России' и текущую дату...

Уточню - кто автор ctl файла. Предполагаю, что разработчики АБС. Кстати, в АБС есть форма, в которой указывается путь к csv файлу, путь к sqlldr.exe и путь с ctl файлу. И, как мне пояснили "через форму грузится 11 часов"
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
S-type
"через форму грузится 11 часов"

Почему-то вспомнилась "народная мудрость":

"Не могу стоять, когда другие работают. Пойду... полежу".
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
У гениев запихивающих для каждой из 100М "строк" о серии/номере паспорта ещё и строку 'Официальный сайт ФМС России' и текущую дату...

С новой версией ctl файла загрузка происходит в течении 20 минут:

OPTIONS (DIRECT=TRUE, multithreading=true, skip=1)
load data
infile *
truncate
into table paspnotinuse
FIELDS TERMINATED BY "\t"
trailing nullcols
(ser_num "replace(:ser_num,',','' ) ",
prim CONSTANT 'Официальный сайт ФМС России',
type CONSTANT 'O',
dateload sysdate)
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
Igor Korolyov
"С такой же скоростью" - наверное можно попробовать. Быстрее - сомнительно.

В общем то, сразу примерно так же и подумал, что вряд ли получится сделать быстрее, чем это сделали сотрудники фирмы Oracle.
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
S-type
С новой версией ctl файла загрузка происходит в течении 20 минут:
Остался ещё один шажок - выкинуть поля prim и dateload из загрузки Ессно разрешив для них NULL-ы в заполняемой таблице. Если в эту таблицу не предполагается "ручной ввод" или ввод из других источников, то можно вообще выкинуть все эти поля, включая type - вероятно он служит для разделения "источников данных".
S-type
вряд ли получится сделать быстрее, чем это сделали сотрудники фирмы Oracle.
Они вообще-то делали универсальный инструмент. Он хоть и весьма гибко настраивается (всякие размеры массивов/буферов), но я полагаю что чисто теоретически можно написать и чуть более быстрый вариант. Да хоть бы тривиально ускорив "чтение и разбор" текстового файла. Всё же универсальный алгоритм как правило проигрывает "специфическому".


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
S-type
Автор

Сообщений: 2969
Дата регистрации: 24.04.2004
На сколько вижу, ребята уже доработали до

OPTIONS (DIRECT=TRUE multithreading=true parallel=true)
load data
infile *
APPEND
into table paspnotinuse
FIELDS TERMINATED BY ','
trailing nullcols
(REAL_SERIES,
SER_NUM ":REAL_SERIES || :SER_NUM",
TYPE CONSTANT 'N',
DATELOAD "sysdate")

В общем, я за них рад




В виду кардинального уменьшения времени загрузки принято решение ничего не автоматизировать, а предоставить возможность ответственному сотруднику самому через АБС загружать справочник.

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



Исправлено 1 раз(а). Последнее : S-type, 22.03.17 12:27
Ratings: 0 negative/0 positive
Re: Заменить sqlldr?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Цитата:
Закон Доньды: "То, что может сделать малый компьютер, имея большую программу, может также сделать большой компьютер с программой малой; отсюда логический вывод, что бесконечно большая программа может выполняться сама, то есть без какого-либо компьютера".
(С. Лем)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 6 (Гостей: 6)

© 2000-2024 Fox Club 
Яндекс.Метрика