Программирование >>  Oracle 

1 ... 137 138 139 [ 140 ] 141 142 143 ... 469


Импорт и экспорт 449

хитр1х приемов для работы с ними. С учетом сложности объектов в современных базах данных, я иногда удивляюсь, что они так хорошо работают.

Значение утилит IMP и ЕХР со временем меняется. Во времена Oracle версий 5 и 6 они считались ценным средством резервного копирования. Базы данных были маленькими (база данных объемом 100 Мбайт считалась большой) а вопрос постоянной доступности данных лишь начал подниматься. Со временем полезность утилит IMP/EXP в сфере резервного копирования и восстановления снизилась до такой степени, что некоторые вообще не считают их средствами резервного копирования и восстановления. Сегодня ЕХР и IMP - сравнительно простые средства для переноса средних объемов данных с одного экземпляра на другой или (в случае использования переносимых таб-личн1х пространств) для множественного переноса данных. Использовать их для резервного копирования базы данных объемом 500 Гбайт - нелепо. А использовать для переноса 100 Гбайт из той же базы данных - вполне допустимо.

По-прежнему применяются они как средство клонирования схемы (если вы, конечно, представляете потенциальные проблемы) или для извлечения операторов ЯОД, формирующих схему, в файл. В сочетании с другими возможностями СУБД, например триггерами INSTEAD OF для представлений, с их помощью можно исполнить и ряд новых трюков . Я уверен, что интересные варианты использования, например совместный доступ двух баз данных к файлам только для чтения, еще ждут своего часа.




Загрузка данных

В этой главе мы рассмотрим загрузку данных, другими словами, как поместить данные в базу данных Oracle. Глава посвящена, в основном, инструментальному средству SQL*Loader (или SQLLDR, произносится сиквел лоудер ) как основному методу загрузки данных. Однако по ходу дела будут рассмотрены и другие варианты загрузки, а также кратко описаны способы извлечения данн1х из базы.

Утилита SQLLDR была в составе СУБД Oracle, сколько я ее помню, лишь незначительно изменяясь со временем, но при работе с ней у многих все еще возникают вопросы. В этой главе я не собираюсь давать исчерпывающее описание этой утилиты, хочу лишь рассмотреть проблемы, с которыми пользователи сталкиваются ежедневно при ее использовании. Глава построена по принципу вопрос-ответ . Будет описываться проблема, а затем ее возможные решения. По ходу изложения будут описаны многие особенности использования утилиты SQLLDR и загрузки данных вообще:

загрузка записей с ограничителем и записей в фиксированном формате;

загрузка дат;

загрузка данных с использованием последовательностей, а также использование

оператора CASE в SQL, добавленного в версии Oracle 8.1.6;

изменение и загрузка данных в один прием (изменение, если данные существу-

ют, и загрузки - в противном случае);

загрузка данных с встроенным переводом строк, для которой мы будем использовать ряд новых возможностей и опций (в частности, будут рассмотрены атрибуты FIX, VAR и STR, добавленные в Oracle 8.1.6);



452 Глава 9

загрузка больших объектов с помощью новых типов данных, BLOB и CLOB, появившихся в Oracle 8.0 и дающих намного больше возможностей, чем старые типы LONG и LONG RAW.

Мы не будем детально описывать режим непосредственной загрузки или использование утилиты SQLLDR в среде хранилищ данных, параллельную загрузку и т.д. Эти темы требуют отдельной книги.

Введение в SQL*Loader

Утилита SQL*Loader (SQLLDR) - высокопроизводительное средство массовой загрузки данных в СУБД Oracle. Это очень полезное средство, позволяющее поместить в базу данных Oracle данные из текстовых файлов множества различных форматов. Утилиту SQLLDR можно использовать для потрясающе быстрой загрузки огромных объемов данных. Она имеет два режима работы:

Обушная загрузка. В этом режиме SQLLDR для загрузки данных будет автоматически вставлять строки с помощью SQL-операторов.

Непосредственная загрузка. В этом режиме SQL не используется. Блоки даннтх в базе формируются непосредственно.

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

Мы не будем детально рассматривать все аспекты использования SQLLDR. Описанию утилиты SQLLDR посвящено шесть глав руководства Oracle Server Utilities Guide. To, что этих глав - шесть, достойно внимания, поскольку каждой из остальных утилит посвящено не более одной главы. Полный синтаксис всех опций можно найти в руководстве, а эта глава посвящена ответам на вопросы типа как сделать? , не рассмотренным в документации.

Учтите, что интерфейс ОСI (Oracle Call Interface для языка С) позволяет создать собственный непосредственный загрузчик на языке С, начиная с первого выпуска версии Oracle 8.1.6 и далее. Эта возможность пригодится, если окажется, что необходимую операцию невозможно выполнить в SQLLDR или потребуется интегрировать процесс загрузки в приложение. SQLLDR - это утилита командной строки, отдельная программа. Это не библиотека функций, ее нельзя, например, вызвать из PL/SQL.

При вызове SQLLDR из командной строки без параметров выдается следующая справочная информация:

$ sqlldr

SQLLDR: Release 8.1.6.1.0 - Production on Sun Sep 17 12:02:59 2000 (c) Copyright 1999 Oracle Corporation. All rights reserved.

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



1 ... 137 138 139 [ 140 ] 141 142 143 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика