Шаг 135 - БД Oracle - Загрузка данных SQL*Loader

Импорт и экспорт данных это конечно здорово! А, как вообще после создания БД, в нее "залить" данные из уже имеющейся БД (например Microsoft Access или Microsoft SQL Server - дай бог здоровья Билу!)? Какие данные и в каком виде можно отправлять в БД Oracle? Все очень просто, в Oracle есть такой инструмент, как SQL*Loader. На первый взгляд он может показаться примитивным и каким-то не серьезным, но это только на первый взгляд! Но тем не менее загрузчик SQL*Loader может получать данные следующим образом:

  1. Данные могут загружаться из нескольких файлов данных.
  2. Входные данные могут быть фиксированной или переменной длины.
  3. За один вызов можно загрузить много таблиц. Возможна так же загрузка только выбранных записей - каждой в соответствующую таблицу.
  4. Перед загрузкой в таблицу данные можно обрабатывать средствами языка SQL.
  5. Несколько физических записей могут быть объединены в одну логическую и наоборот - при помощи SQL можно выбрать одну физическую запись и загрузить ее в несколько логических.
  6. Так же поддерживаются вложенные, столбцы вложенных таблиц. Массивы VARRAY и объектов LOB (включая BLOB, CLOB, NCLOB и BIFILE).

Обычно для начала работы вызывается загрузчик из командной строки по одному из следующих имен: sqlldr, sqlload, sqldr80.

В разных операционных системах, могут быть разные имена загрузчиков SQL*Loader. Итак, давайте попробуем для начала получить список параметров SQL*Loader. Для удобства я создал bat файлик следующего содержания:

\\.. .bat ->

set nls_lang=russian_cis.ru8pc866

sqlldr.exe >helloader.txt

А, вот содержимое файла helloader.txt:

.
.
Синтаксис: SQLLDR ключ.слово=значение [,ключ.слово=значение,...]

Допустимые ключевые слова:

userid -- ORACLE username/password
control -- Control file name
log -- Log file name
bad -- Bad file name
data -- Data file name
discard -- Discard file name
discardmax -- Number of discards to allow	(По умолчанию - все)
skip -- Number of logical records to skip    	(По умолчанию 0)
load -- Number of logical records to load    	(По умолчанию - все)
errors -- Number of errors to allow		(По умолчанию 50)

rows -- Number of rows in conventional path bind array or between direct path data saves
(По умолчанию: условный маршрут - 64, прямой маршрут - ALL)

bindsize -- Size of conventional path bind array in bytes  (По умолчанию 256000)
silent -- Suppress messages during run (header,feedback,errors,discards,partitions)
direct -- use direct path			(По умолчанию FALSE)
parfile -- parameter file: name of file that contains parameter specifications
parallel -- do parallel load			(По умолчанию FALSE)
file -- File to allocate extents from

skip_unusable_indexes -- disallow/allow unusable indexes or 
index partitions (По умолчанию FALSE) 

skip_index_maintenance -- do not maintain indexes, mark affected indexes 
as unusable (По умолчанию FALSE)

readsize -- Size of Read buffer	(По умолчанию 1048576)

external_table -- use external table for load; NOT_USED, 
GENERATE_ONLY, EXECUTE (По умолчанию NOT_USED) 

columnarrayrows -- Number of rows for direct path column array (По умолчанию 5000)
streamsize -- Size of direct path stream buffer in bytes  (По умолчанию 256000)
multithreading -- use multithreading in direct path
resumable -- enable or disable resumable for current session  (По умолчанию FALSE)
resumable_name -- text string to help identify resumable statement
resumable_timeout -- wait time (in seconds) for RESUMABLE  (По умолчанию 7200)
date_cache -- size (in entries) of date conversion cache  (По умолчанию 1000)

Примечание: параметры командной строки могут быть заданы, либо по позициям позиции 
или по ключевым словам. Примером предыдущего случая является 'sqlldr scott/tiger foo'; 
а во втором случае: 'sqlldr control=foo userid=scott/tiger'. Параметры, заданные 
по позициям, могут стоять перед, но не после параметров, заданных ключевыми словами.  
Например запись 'sqlldr scott/tiger control=foo logfile=log' разрешен, а
'sqlldr scott/tiger control=foo log' не разрешен, несмотря на то, что
позиция параметра 'log' является правильной.
.
.

Для более полного понимания приведу перевод назначения параметров, который вы в дальнейшем можете использовать как справку! Хотя поучить английский тоже не помешает! Так как без него как без рук! Итак:

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


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 16.05.2004