Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Tabele zewnętrzne Oracle

Tabela zewnętrzna jest jedną z ważnych funkcji w Oracle , w tym poście omówimy tabelę zewnętrzną w Oracle z przykładem.

Co to są ZEWNĘTRZNE TABELE w Oracle?

1)Zewnętrzne tabele to tabele tylko do odczytu, w których dane są przechowywane w płaskich plikach poza bazą danych

2) Możesz użyć funkcji tabeli zewnętrznej, aby uzyskać dostęp do plików zewnętrznych, tak jakby były tabelami w bazie danych.

3)   Tworząc tabelę zewnętrzną, definiujesz jej strukturę i lokalizację za pomocą narzędzia Oracle. Zasadniczo przechowujesz metadane wewnątrz wyroczni

4) Kiedy wysyłasz zapytanie do tabeli, oracle odczytuje zewnętrzną tabelę i zwraca wyniki, tak jakby dane były przechowywane w bazie danych.

5) Serwer Oracle udostępnia dwa główne sterowniki Oracle do odczytywania płaskich plików

  1. Oracle_loader:Służy do odczytywania płaskich plików przy użyciu technologii Oracle Loader. Zasadniczo pozwala na odczytanie plików, które można zinterpretować za pomocą technologii ładowania SQL
  2. Oracle_datapump:Służy zarówno do importowania, jak i eksportowania danych przy użyciu formatu niezależnego od platformy

DOSTĘP DO ZEWNĘTRZNYCH DANYCH TABELI

Aby uzyskać dostęp do tabeli zewnętrznej, należy wykonać kilka kroków

  • Najpierw musimy użyć polecenia tworzenia katalogu, aby zdefiniować obiekt katalogu wskazujący na lokalizację pliku zewnętrznego
sqlplus "/ as sysdba"

Create directory ext_dir as ‘/export/home/ora/external’;

  • Użytkownicy, którzy będą mieli dostęp do plików zewnętrznych, muszą mieć uprawnienia do odczytu i zapisu w katalogu.
Grant all on directory ext_dir to user;

  • Teraz utwórzmy lub umieśćmy kilka plików w katalogu
SQL> Conn user/user

SQL> Spool city.lst

SQL> Select city || ‘,’ || state || ‘,’ || country from countries;

SQL> Spool off

 

Teraz powinieneś widzieć plik city.lst w katalogu

  • Teraz powinniśmy utworzyć zewnętrzną tabelę za pomocą poniższego polecenia
Create table city_ext
(city varchar(10),
state varchar(14),
country varchar(13))
Organization external  ( type oracle_loader
Default directory ext_dir
Access parameters
( records delimited by newline
Fields terminated by “,”
( city char(10),
state char(14),
country char(13)))
Location (‘city.lst’))
PARALLEL 5
REJECT LIMIT UNLIMITED;

Wyjaśnienie każdego terminu

Zewnętrzna organizacja Informuje, że dane są przechowywane poza bazą danych
Wpisz To sterownik oracle lub interfejs API, który interpretuje dane zewnętrzne dla bazy danych. Jeśli nic nie określisz, domyślnie jest to oracle_loader
Domyślny katalog Jest to katalog, w którym mogą być przechowywane zwykłe pliki. Domyślny katalog jest również używany do przechowywania plików pomocniczych utworzonych z dostępu sterownika oracle, takich jak plik dziennika i złe pliki. Możemy określić wiele katalogów, aby ułatwić równoważenie obciążenia na wielu dyskach
Parametry dostępu Pozwala określić wartości parametrów konkretnego sterownika dostępu dla tej zewnętrznej tabeli
Lokalizacja Pozwala określić nazwę zewnętrznego pliku płaskiego
LIMIT ODRZUCENIA Pozwala określić, ile błędów konwersji może wystąpić, zanim serwer Oracle przerwie operację i zwróci błąd

5) WYBIERANIE DANYCH Z TABELI ZEWNĘTRZNEJ

SQL> wybierz * z city_ext;

Będzie to odczytane z city.lst, który jest plikiem na poziomie systemu operacyjnego.

Jeśli plik city.lst nie jest obecny, instrukcja select spowoduje wyświetlenie tego błędu

SELECT *
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04040: file city.lst in EXT_DIR not found
ORA-06512: at "SYS.ORACLE_LOADER", line 14
ORA-06512: at line 1

OGRANICZENIA DOTYCZĄCE STOŁÓW ZEWNĘTRZNYCH

  1. Nie możesz wykonywać operacji wstawiania, aktualizowania i usuwania
  2. Indeksowanie Oracle nie jest możliwe
  3.  Ograniczenia nie są możliwe

ZALETY STOŁÓW ZEWNĘTRZNYCH W ORACLE

  1. a) Zapytania dotyczące tabel zewnętrznych kończą się bardzo szybko, mimo że przy każdym dostępie wymagany jest pełny identyfikator skanowania tabeli
  2. b) Możesz łączyć zewnętrzne stoły ze sobą lub ze standardowymi stołami oracle
  3. c) Możemy tworzyć widoki na zewnętrznym stole

Nowa aktualizacja w 11gR2 dla tabeli zewnętrznej

W Oracle 11g Release 2 wprowadzono nową klauzulę PREPROCESSOR, która może identyfikować obiekt katalogu i skrypt używany do przetwarzania plików, zanim zostaną odczytane przez zewnętrzną tabelę. Ta funkcja została przeniesiona do 11gR1 (11.1.0.7).

Klauzula PREPROCESSOR jest szczególnie przydatna do odczytywania skompresowanych plików, ponieważ są one rozpakowywane i przesyłane bezpośrednio do zewnętrznego procesu tabeli bez konieczności rozpakowywania w systemie plików.

Weźmy przykład, aby lepiej zrozumieć ten parametr.

Załóżmy, że city.list jest skompresowany, a nazwa pliku to city.list.Z

Create table city_ext
(city varchar(10),
state varchar(14),
country varchar(13))
Organization external  ( type oracle_loader
Default directory ext_dir
PREPROCESSOR ext_dir:uncompress
Access parameters
( records delimited by newline
Fields terminated by “,”
( city char(10),
state char(14),
country char(13)))
Location (‘city.lst.Z’))
PARALLEL 5
REJECT LIMIT UNLIMITED;

Tutaj klauzula PREPROCESSOR najpierw zdekompresuje plik city.lst.Z za pomocą polecenia uncompress przed wyszukaniem danych. Wszystko dzieje się w locie i nie trzeba rozpakowywać pliku city.lst.Z

Rozładowywanie/ładowanie danych przy użyciu zewnętrznych tabel Oracle

Oracle zapewniło również wsparcie dla technologii pomp danych w tabeli zewnętrznej.

Możemy wyładować tabelę za pomocą sterownika dostępu oracle_datadump

CREATE TABLE countries_xt
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY ext_dir
LOCATION ('countries.dmp')
)
AS SELECT * FROM countries;

Spowoduje to utworzenie w katalogu plików countries.dmp. Teraz nawet kraje tabeli są usuwane, nadal możemy oglądać dane za pomocą tabeli country_xt.

Możemy nawet przenieść plik zrzutu do innej bazy danych, a następnie utworzyć zewnętrzną tabelę do oglądania danych

CREATE TABLE countries_xt (
city    VARCHAR2(10),
state       VARCHAR2(9),
countries    VARCHAR2(9))
ORGANIZATION EXTERNAL (
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY ext_dir
LOCATION ('countries.dmp ')
);

Select * from countries_xt;

_xt

Ulepszenia w zewnętrznych tabelach w bazie danych 12c

Oracle_loader

Klauzula lokalizacji może mieć symbol wieloznaczny. * oznacza wiele znaków i ? dla jednego znaku.

Wprowadzono klauzulę Fields csv

Oracle_datapump

Możemy wyładować dane za pomocą zaawansowanej opcji kompresji

Powiązane artykuły

ORA-29913 z tabelami zewnętrznymi
Wskazówki dotyczące tabeli zewnętrznej
Jak załadować pole CLOB z tabelą zewnętrzną
Oracle utwórz tabelę jako wybierz


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę uzyskać liczbę rekordów, których dotyczy procedura składowana?

  2. dbms_metadata.get_ddl nie działa

  3. Jak wybrać podciąg w Oracle SQL do określonego znaku?

  4. Jak korzystać z Oracle SQL*Plus

  5. Musisz znaleźć średni czas przetwarzania między wszystkimi rekordami znaczników czasu w Oracle SQL