Oracle
 sql >> база данни >  >> RDS >> Oracle

Външни таблици на Oracle

Външната таблица е една от важните функции в oracle , ние ще изследваме външна таблица в oracle с пример в тази публикация

Какво представляват ВЪНШНИ ТАБЛИЦИ в Oracle?

1) Външните таблици са таблици само за четене, където данните се съхраняват в плоски файлове извън базата данни

2) Можете да използвате функцията за външна таблица за достъп до външни файлове, сякаш са таблици в базата данни.

3)   Когато създавате външна таблица, дефинирате нейната структура и местоположение с в oracle. По принцип просто съхранявате метаданните в оракула

4) Когато направите заявка към таблицата, oracle чете външната таблица и връща резултатите, точно както ако данните са били съхранени в базата данни.

5) Сървърът на oracle предоставя два основни драйвера на oracle за четене на плоските файлове

  1. Oracle_loader:Използва се за четене на плоски файлове с помощта на технологията за зареждане на Oracle. По принцип позволява четене на файлове, които могат да бъдат интерпретирани с помощта на технологията за зареждане на SQL
  2. Oracle_datapump:Използва се както за импортиране, така и за експортиране на данни, използвайки независим от платформа формат

ДОСТЪП ДО ВЪНШНИ ТАБЛИЧНИ ДАННИ

Трябва да изпълните няколко стъпки, за да получите достъп до външната таблица

  • Първо трябва да използваме командата create directory, за да дефинираме обект на директория, сочещ местоположението на външния файл
sqlplus "/ as sysdba"Създайте директория ext_dir като ‘/export/home/ora/external’;
  • Потребителите, които ще имат достъп до външните файлове, трябва да имат привилегията за четене и запис в директорията.
Предоставете всички в директорията ext_dir на потребителя;
  • Нека сега създадем или поставим някои файлове в директорията
SQL> Conn user/userSQL> Spool city.lstSQL> Изберете град || ‘,’ || състояние || ‘,’ || държава от държави;SQL> Изключване на пулверизиране 

Сега трябва да можете да видите файла city.lst в директорията

  • Сега трябва да създадем външната таблица с помощта на командата по-долу
Създайте таблица city_ext(city varchar(10),state varchar(14),country varchar(13))Организация външна  ( тип oracle_loaderDefault директория ext_dirAccess параметри (записи, ограничени от newlineFields, прекратени с „,”( city char(10), state char(14),country char(13)))Местоположение ('city.lst'))PARALLEL 5REJECT LIMIT НЕОГРАНИЧЕН;

Обяснение на всеки термин

Външна организация Той казва, че данните се съхраняват извън базата данни
Тип Това е драйверът на oracle или API  който интерпретира външните данни за базата данни. Ако не посочите нищо, тогава oracle_loader  е по подразбиране
Директория по подразбиране Това е местоположението на директорията, където могат да се съхраняват плоските файлове. Директорията по подразбиране също се използва за съхраняване на помощните файлове, създадени от достъпа на драйвера на oracle, като лог файл и лоши файлове. Можем да посочим множество директории, за да улесним балансирането на натоварването на множество устройства
Параметри за достъп Позволява ви да зададете стойности на параметъра на специфичния драйвер за достъп за тази външна таблица
Местоположение Позволява ви да посочите името на външния плосък файл
ОГРАНИЧЕН ОТХВЪРЛЯНЕ Позволява ви да посочите колко грешки при преобразуване могат да възникнат, преди сървърът на Oracle да прекрати операцията и да върне грешката

5) ИЗБОР НА ДАННИ ОТ ВЪНШНА ТАБЛИЦА

SQL> изберете * от city_ext;

Това ще чете от city.lst, който е файл на ниво операционна система.

Ако файлът city.lst не присъства, операторът select ще изведе тази грешка

SELECT **ГРЕШКА на ред 1:ORA-29913:грешка при изпълнение на ODCIEXTTABLEOPEN calloutORA-29400:грешка в касетата с данниKUP-04040:файл city.lst в EXT_DIR не е намерен ORA-06512:на "SYS.ORACLE_LOADER-", ред 1 06512:на ред 1

ОГРАНИЧЕНИЯ ЗА ВЪНШНИ МАССИ

  1. Не можете да извършвате операции за вмъкване, актуализиране и изтриване
  2. Индексирането на Oracle не е възможно
  3.  Ограниченията не са възможни

ПРЕДИМСТВА НА ВЪНШНИТЕ ТАБЛИЦИ В ORACLE

  1. a) Заявките на външни таблици завършват много бързо, въпреки че се изисква пълен идентификационен номер за сканиране на таблицата при всеки достъп
  2. b) Можете да присъедините външни таблици една към друга или към стандартни таблици на оракул
  3. в) Можем да създаваме изгледи на външната таблица

Нова актуализация в 11gR2 за външна таблица

С Oracle 11g Release 2 се въвежда нова клауза PREPROCESSOR, която може да идентифицира обект на директория и скрипт, използвани за обработка на файловете, преди те да бъдат прочетени от външната таблица. Тази функция бе пренесена обратно към 11gR1 (11.1.0.7).

Клаузата PREPROCESSOR е особено полезна за четене на компресирани файлове, тъй като те се разархивират и прехвърлят направо във външния процес на таблица, без изобщо да се налага да се разархивират във файловата система.

Нека вземем пример, за да разберем по-добре този параметър.

Да предположим, че city.list е компресиран, тогава името на файла ще бъде city.list.Z

Създайте таблица city_ext(city varchar(10),state varchar(14),country varchar(13))Организация външна  ( тип oracle_loaderDefault directory ext_dirPREPROCESSOR ext_dir:uncompressAccess параметри (записи, ограничени от newlineFields, прекратени с „,”( city char( 10),символ за щат(14),символ за държава(13)))Местоположение ('city.lst.Z'))ПАРАЛЕЛ 5 ОГРАНИЧЕН ОГРАНИЧЕН НЕОГРАНИЧЕН;

Тук клаузата PREPROCESSOR първо ще разкомпресира файла city.lst.Z с помощта на команда uncompress, преди да търси данните. Всичко ще се случи в движение и няма да е необходимо да декомпресирате файла city.lst.Z

Разтоварване/Зареждане на данни с помощта на външни таблици на Oracle

Oracle също така предостави поддръжка за технологията datapump във външна таблица.

Можем да разтоварим таблицата с помощта на драйвер за достъп oracle_datadump

СЪЗДАВАНЕ НА ТАБЛИЦА ВЪНШНА ВЪНШНА СТРАНА_xtORGANIZATION(TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('countries.dmp'))КАТО ИЗБЕРЕТЕ * ОТ държави;

Това ще създаде country.dmp в директорията. Сега дори таблицата с държави е премахната, ние все още можем да гледаме данните с помощта на таблицата countries_xt.

Можем дори да вземем дъмп файл в друга база данни и след това да създадем външна таблица, за да наблюдаваме данните

СЪЗДАВАНЕ НА ТАБЛИЦА country_xt (град    VARCHAR2(10),щат       VARCHAR2(9),държави    VARCHAR2(9))ВЪНШНА ОРГАНИЗАЦИЯ (ТИП ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION.'xcountry.Select_preLOCATION.') 

Подобрения във външни таблици в база данни 12c

Oracle_loader

Клаузата за местоположение може да има  удивителен знак. * означава множество символи и ? за единичен знак.

Въведена е клауза csv за полета

Oracle_datapump

Можем да разтоварим данните с помощта на разширена опция за компресиране

Сродни статии

ORA-29913 с външни таблици
Съвети за външна таблица
Как да заредите CLOB поле с външна таблица
oracle създаде таблица като избран


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ODP.net Управляван срещу неуправляван драйвер

  2. Декларация на Oracle, обяснена със съвети и примери

  3. Как да използвам константа на пакета в SQL оператор SELECT?

  4. Функция TO_TIMESTAMP_TZ() в Oracle

  5. Функция SINH() в Oracle