Слайд 2БД ORACLE
Назначение
Загрузка внешних данных в БД Oracle
                                                            
                                                                    
                            							
							
							
						 
											
                            Слайд 3Возможности
Загрузка данных из нескольких файлов разного типа
Обработка разных входных форматов
Использование SQL
                                                            
                                    – функций перед загрузкой
Поддержка большого количества типов данных
Загрузка данных в несколько таблиц одновременно
Объединение нескольких физических записей в одну логическую
Загрузка одной физической записи в несколько логических
Построение последовательных значений
Преобразование национальных кодировок при загрузке
Загрузка двоичных данных
Некоторые другие возможности
                                
                            							
														
						 
											
                            Слайд 4Основные компоненты SQL*Loader
Входная информация: 
внешние данные, (на диске или ленте) 
управляющая
                                                            
                                    информация (в управляющем файле), описывающая входные данные и формат таблиц
Выходные данные:
таблицы Oracle, 
файл протокола, 
файл отсеянных записей
файл отвергнутых записей. 
От вывода некоторых файлов можно отказаться. 
                                
                            							
														
						 
											
                            Слайд 5Основные компоненты SQL*Loader
SQL*Loader
Управляющий
файл
Файл 
отсеянных
записей
Файл 
отвергнутых
записей
Файл 
протокола
загрузки
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 6Входные данные
SQL*Loader может обрабатывать практически любые типы файлов данных
Файл данных может
                                                            
                                    иметь фиксированный или переменный формат.
Двоичные данные должны загружаться из файла фиксированного формата.
Поля в файлах переменного формата могут отделяться одно от другого символами-разделителями, быть окаймлены символами-ограничителями или разделяются и тем, и другим.
                                
                            							
														
						 
											
                            Слайд 7Управляющий файл
Управляющий файл — это текстовый файл, который содержит инструкции, указывающие
                                                            
                                    SQL*Loader, как обрабатывать данные. 
                                
                            							
														
						 
											
                            Слайд 8Файл протокола загрузки 
Создается при выполнении SQL*Loader. Содержит информацию о процессе
                                                            
                                    загрузки:
Имена входных файлов данных, управляющего файла, файлов отсеянных и отвергнутых записей
Входные данные и спецификации соответствующих таблиц
Ошибки SQL*Loader
Результаты SQL*Loader
Итоговую статистику
                                
                            							
														
						 
											
                            Слайд 9Файлы отвергнутых и отсеянных записей
На основании информации из управляющего файла входные
                                                            
                                    записи проверяются на соответствие:
требованиям формата
критериям отбора записей.
Отбракованные записи заносятся в файлы отвергнутых записей и отсеянных записей
Эти файлы можно отредактировать и загрузить снова.
                                
                            							
														
						 
											
                            Слайд 10Физические и логические записи
Физические записи - отдельные строки во входном файле
                                                            
                                    данных
Логические записи - соответствуют строкам в таблицах базы данных
Физическая запись может взаимно однозначно соответствовать логической записи
Позволяется:
 связывать несколько физических записей в одну логическую с помощью предложений CONCATENATE или CONTINUEIF 
разделять одну физическую запись на несколько логических.
                                
                            							
														
						 
											
                            Слайд 11Последовательность работы SQL*Loader
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 12Типы загрузки SQL*Loader
Обычная загрузка
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 13Обычная загрузка
Для массива записей генерируется команда SQL INSERT. Подход приемлем для
                                                            
                                    небольших массивов данных. 
Другие пользователи и процессы Oracle могут обращаться к таблице одновременно с SQL*Loader.
Индексы обновляются по мере вставки строк 
При загрузке активизированы все ограничения целостности и триггеры INSERT.
Можно применять функции SQL к входным данным.
Данные могут быть загружены в кластерную таблицу.
Данные могут быть загружены с помощью SQL*Net.
                                
                            							
														
						 
											
                            Слайд 14Типы загрузки SQL*Loader
Прямая загрузка
Oracle7
Server
                                                            
                                                                    
                            							
														
						 
											
                            Слайд 15Прямая загрузка
Новые экстенты выделяются менеджером экстентов. Форматированные блоки данных записываются непосредственно
                                                            
                                    в БД.
Преимущества прямой загрузки:
Быстрая загрузка и индексирование больших объемов данных.
Высокая производительность, за счет загрузки предварительно отсортированных данных.
Возможность параллельной загрузки. 
Возможность выполнение прямой загрузки с опцией UNRECOVERABLE (без восстановления журнала Oracle).
                                
                            							
														
						 
											
                            Слайд 16Прямая загрузка
Недостатки и ограничения:
Монопольная блокировка таблиц и индексов
Индексы переводятся в состояние
                                                            
                                    прямой загрузки в начале загрузки и должны быть перестроены автоматически или вручную после завершения загрузки.
Не работают триггеры ограничения целостности, кроме NOT NULL. Все нарушения помещаются в таблицу исключений.
Нельзя применять функции SQL к входным данным.
Данные не могут быть загружены в кластерную таблицу.
Ограничено использование SQL*Net.
Не работает опция DEFAULT для столбца.
Нельзя использовать синонимы, ссылающиеся на на другие синонимы или представления.
                                
                            							
														
						 
											
                            Слайд 17Параллельная загрузка данных
Oracle Version 7.1 предоставляет возможность выполнения прямой загрузки в
                                                            
                                    параллельном режиме, которая обеспечивает почти линейный рост производительности SQL*Loader в мультипроцессорных системах.
                                
                            							
														
						 
											
                            Слайд 18Синтаксис управляющего файла
Работают обычные для ORACLE ограничения.
Управляющий файл логически состоит из
                                                            
                                    семи разделов:
Предложение OPTIONS
Предложение UNRECOVERABLE/RECOVERABLE
Предложение LOAD DATA
Предложение INFILE
Метод загрузки таблицы
Предложение CONCATENATION
Предложение INTO TABLE
Предложение OPTIONS для таблицы
                                
                            							
														
						 
											
                            Слайд 19Предложение OPTIONS
OPTIONS (параметр = значение, …)
Необязательное предложение, которое позволяет задать некоторые
                                                            
                                    параметры работы утилиты в управляющем файле, а не в командной строке. 
Полезно, если командная строка становится слишком длинной, неудобной в работе. 
Значения параметров, указанные в предложении OPTIONS, могут быть изменены в командной строке.
                                
                            							
														
						 
											
                            Слайд 20Параметры предложения OPTIONS:
SKIP = n
LOAD = n
ERRORS = n
ROWS = n
BINDSIZE
                                                            
                                    = n
SILENT = {HEADER|FEEDBACK ERROR|
			 DISCARDS|ALL}
DIRECT = {TRUE|FALSE}
PARALLEL = {TRUE|FALSE}
                                
                            							
														
						 
											
                            Слайд 21Предложение LOAD DATA
LOAD [DATA] [CHARACTERSET кодировка]
Основной оператор в управляющем файле. 
LOAD
                                                            
                                    [DATA] может сопровождаться уточняющими фразами и предложениями. 
CHARACTERSET имя_символьного_набора требуется, если входные файлы данных кодированы внешними символьными наборами:
LOAD DATA CHARACTERSET RU8PC866
LOAD DATA CHARACTERSET CL8MSWIN1251
                                
 
                            							
														
						 
											
                            Слайд 22Предложение INFILE
INFILE|IDDN {*|имя_входного_файла}
Далее (необязательно) следуют:
BADFILE | BDDN имя_ файла отвергнутых записей.
                                                            
                                    
DISCARDFILE | DISCARDDN), имя файла отсеянных записей,
DISCARDS | DISCARDMAX макс. число отбракованных записей. Обработка файла данных прекращается, когда достигается это ограничение.
                                
                            							
														
						 
											
                            Слайд 23Методы загрузки таблиц 
INSERT
APPEND 
REPLACE 
TRUNCATE
	Ключевое слово определяет глобальный метод для
                                                            
                                    сеанса загрузки; кроме того, в предложении INTO TABLE можно задать метод для отдельной таблицы.
                                
                            							
														
						 
											
                            Слайд 24Предложение 
CONCATENATION | CONTINUEIF
Позволяет “собирать” одну логическую запись из нескольких физических
CONCATENATE
                                                            
                                    число - для постоянного количества физич. записей
CONTINUEIF - для переменного количества физических записей
CONTINUEIF THIS (1:2) = ‘_$’
CONTINUEIF NEXT (1:2) = ‘_$’
CONTINUEIF LAST != ‘#’
Если байты 1-2 текущей записи совпадают с шаблоном, подсоединить следующую запись
Если байты 1-2 следующей записи совпадают с шаблоном, подсоединить следующую запись
Если последний не пробельный символ текущей записи не ‘#’, объединить ее со следующей
                                
 
                            							
														
						 
											
                            Слайд 25Предложение INTO TABLE
Включает следующие элементы:
Имя таблицы, в которую должны быть загружены
                                                            
                                    данные
Метод загрузки для таблицы
Предложение OPTIONS для таблицы
Предложение WHEN
Предложение FIELDS
Предложение TRAILING NULLCOLS
Индексные опции
Условия, связанные с полями
Отношение между полями файла данных и столбцами базы данных
                                
                            							
														
						 
											
                            Слайд 26Условия, относящиеся к полям
   Условие, относящееся к полю, —
                                                            
                                    это выражение с полем логической записи, которое может принимать значение “истина” или “ложь”. В таких выражениях используются ключевые слова NULLIF и DEFALILTIF, а также фраза WHEN. 
   Если выражение истинно, то:
NULLIF присваивает значению столбца “NULL”,. 
DEFAULTIF - заносит в столбец нуль или пробел. 
BLANKS - позволяет проверять, содержат ли поля любой длины только пробелы.
                                
                            							
														
						 
											
                            Слайд 27Спецификации столбцов
Установка значений столбца
1. значение может читаться из файла данных. 
2.
                                                            
                                    генерироваться с помощью функций SQL*Loader:
CONSTANT, 
RECNUM, 
SYSDATE 
SEQUENCE
                                
                            							
														
						 
											
                            Слайд 28Использование функций SQL
Строка с функцией вводится после всех других спецификаций для
                                                            
                                    данного столбца и должна быть заключена в двойные кавычки. 
К именам полей в строке SQL можно обращаться, предваряя их двоеточием. Примеры использования функций SQL:
my_field position (1: 18) integer external 
  “TRANSLATE (RTRIM (:my_field) , ‘N/A’ , ‘ 0 ‘ ) “
my_string CHAR terminated by “, “ 
  “SUBSTR (: my_string ,1, 10)”
my_number position (1: 9) DECIMAL EXTERNAL(8) “:field/1000”
                                
 
                            							
														
						 
											
                            Слайд 29Операторы загрузки в несколько таблиц 
Можно задавать SQL*Loader несколько операторов INTO
                                                            
                                    TABLE, что позволяет решать такие задачи:
Извлечение нескольких логических записей из одной физической записи.
Работа с различными форматами записи.
Загрузка данных в различные таблицы.
                                
                            							
														
						 
											
                            Слайд 30Опции командной строки и файлы параметров
Имя исполняемого модуля SQL*Loader зависит от
                                                            
                                    операционной системы.
Вызвав SQL*Loader без параметров, вы увидите список параметров командной строки и их значений по умолчанию:
                                
                            							
														
						 
											
											
                            Слайд 32Пример Parfile.
SQLLOAD parfile=weekly.par
WEEKLY. PAR
userid=scofcfc/tiger control=weekly.ctL log=weekly, log errors=25 direct=true
Параметры, заданные в
                                                            
                                    файле управления или PARFILE, могут быть переопределены в командной строке.
                                
                            							
														
						 
											
                            Слайд 33Примеры
Вы можете найти их в каталоге 
[ORACLE_HOME] / RDBMSxx / LOADER