sql >> Database teknologi >  >> RDS >> Oracle

Oracle eksterne tabeller

Ekstern tabel er en af ​​de vigtige funktioner i Oracle, vi vil udforske ekstern tabel i Oracle med eksempel i dette indlæg

Hvad er EKSTERNE TABELLER i Oracle?

1) Eksterne tabeller er skrivebeskyttede tabeller, hvor dataene er gemt i flade filer uden for databasen

2) Du kan bruge ekstern tabelfunktion til at få adgang til eksterne filer, som om de er tabeller inde i databasen.

3)   Når du opretter en ekstern tabel, definerer du dens struktur og placering med i oracle. Grundlæggende gemmer du bare metadataene inde i oraklet

4) Når du forespørger i tabellen, læser Oracle den eksterne tabel og returnerer resultaterne, ligesom hvis dataene var blevet gemt i databasen.

5) Oracle-serveren har to store oracle-drivere til at læse de flade filer

  1. Oracle_loader:Dette bruges til at læse de flade filer ved hjælp af oracle loader-teknologien. Det giver grundlæggende mulighed for at læse filerne, som kan fortolkes ved hjælp af SQL loader-teknologi
  2. Oracle_datapump:Dette bruges til både import og eksport af data ved hjælp af platformsuafhængigt format

ADGANG TIL EKSTERNE TABELDATA

Der er få trin, der skal udføres for at få adgang til den eksterne tabel

  • Vi skal først bruge kommandoen create directory til at definere et biblioteksobjekt, der peger på den eksterne filplacering
sqlplus "/ as sysdba"Opret mappe ext_dir som ‘/export/home/ora/external’;
  • Brugere, der vil få adgang til de eksterne filer, skal have læse- og skriverettigheder på mappen.
Giv alle i mappen ext_dir til brugeren;
  • Lad os nu oprette eller lægge nogle filer under mappen
SQL> Conn user/userSQL> Spool city.lstSQL> Vælg by || ',' || stat || ',' || land fra lande;SQL> Spool off 

Nu skulle du være i stand til at se city.lst-filen i mappen

  • Nu skal vi oprette den eksterne tabel ved hjælp af nedenstående kommando
Opret tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organisation ekstern  (type oracle_loaderDefault directory ext_dirAccess parameters(poster afgrænset af newlineFields afsluttet af ","( city char(10), state char(14),country char(13)))Placering ('city.lst'))PARALLEL 5REJECT LIMIT UNLIMITED;

Forklaring af hvert udtryk

Ekstern organisation Det fortæller, at data er gemt uden for databasen
Type Det er oracle-driveren eller API'en  som fortolker de eksterne data for databasen. Hvis du ikke angiver noget, er oracle_loader standarden
Standard bibliotek Det er mappeplaceringen, hvor de flade filer kan gemmes. Standardbiblioteket bruges også til at gemme de hjælpefiler, der er oprettet fra adgangen til oracle-driveren, såsom logfiler og dårlige filer. Vi kan specificere flere mapper for at lette belastningsbalancering på flere drev
Adgangsparametre Det lader dig specificere værdier for parameteren for den specifikke adgangsdriver for denne eksterne tabel
Placering Det lader dig angive det eksterne flad filnavn
AFVIS GRÆNSE Det lader dig angive, hvor mange konverteringsfejl der kan opstå, før oracle-serveren afbryder handlingen og returnerer fejlen

5) VALG AF DATA FRA EKSTERN TABEL

SQL> vælg * fra city_ext;

Dette vil læse fra city.lst, som er en fil på operativsystemniveau.

Hvis filen city.lst ikke er til stede, ville select-sætningen give denne fejl

VÆLG **FEJL på linje 1:ORA-29913:fejl under udførelse af ODCIEXTTABLEOPEN calloutORA-29400:datapatronfejlKUP-04040:fil by.lst i EXT_DIR ikke fundetORA-06512:ved "SYS.ORACLE_LOADERA",- linje 14ORA 06512:på linje 1

BEGRÆNSNINGER PÅ EKSTERNE TABELLER

  1. Du kan ikke udføre indsættelse, opdatering og sletning
  2. Oracle-indeksering ikke mulig
  3.  Begrænsninger ikke mulige

FORDELE VED EKSTERNE BORDE I ORACLE

  1. a) Forespørgsler til eksterne tabeller fuldføres meget hurtigt, selvom et komplet tabelscannings-id kræves ved hver adgang
  2. b) Du kan forbinde eksterne tabeller med hinanden eller til standard oracle-tabeller
  3. c) Vi kan oprette visninger på den eksterne tabel

Ny opdatering i 11gR2 til eksternt bord

Med Oracle 11g Release 2 introduceres en ny PREPROCESSOR-klausul, som kan identificere et mappeobjekt og et script, der bruges til at behandle filerne, før de læses af den eksterne tabel. Denne funktion blev backporteret til 11gR1 (11.1.0.7).

PREPROCESSOR-sætningen er især nyttig til at læse komprimerede filer, da de udpakkes og sendes direkte ind i den eksterne tabelproces uden nogensinde at skulle udpakkes på filsystemet.

Lad os tage et eksempel for bedre at forstå denne parameter.

Antag, at city.list er komprimeret, så vil filnavnet være city.list.Z

Opret tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organisation ekstern  (type oracle_loaderDefault directory ext_dirPREPROCESSOR ext_dir:uncompressAccess parameters(poster afgrænset af newlineFields afsluttet af ","( by char( 10),stat char(14),land char(13)))Placering ('city.lst.Z'))PARALLEL 5REJECT LIMIT UNLIMITED;

Her vil PREPROCESSOR-sætningen først udkomprimere filen city.lst.Z ved hjælp af kommandoen uncompress, før du leder efter dataene. Alt ville ske med det samme, og du behøver ikke at komprimere filen city.lst.Z

Aflæsning/indlæsning af data ved hjælp af eksterne Oracle-tabeller

Oracle leverede også support til datapumpeteknologi i ekstern tabel.

Vi kan udlæse tabellen ved hjælp af oracle_datadump adgangsdriver

OPRET TABEL lande_xtORGANISATION EKSTERN(TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('countries.dmp'))SOM VÆLG * FRA lande;

Dette vil oprette lande.dmp i mappen. Nu selv tabellen lande er droppet, kan vi stadig se data ved hjælp af country_xt tabellen.

Vi kan endda tage en dumpfil til en anden database og derefter oprette en ekstern tabel for at se dataene

OPRET TABEL lande_xt (by    VARCHAR2(10),stat       VARCHAR2(9),lande    VARCHAR2(9))ORGANISATION EKSTERN (TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION (')_dries from 't_countries; 

Forbedringer i eksterne tabeller i 12c-databasen

Oracle_loader

Placeringsklausul kan have et wild-tegn. * står for flere tegn og ? for enkelt tegn.

Fields csv-klausul er blevet introduceret

Oracle_datapump

Vi kan udlæse dataene ved hjælp af avanceret komprimeringsmulighed

Relaterede artikler

ORA-29913 med eksterne tabeller
Tips om ekstern tabel
Sådan indlæses et CLOB-felt med en ekstern tabel
oracle create table as select


  1. UUID-kollisionsrisiko ved hjælp af forskellige algoritmer

  2. SQLAlchemy PÅ DUBLIKAT NØGLEOPDATERING

  3. 6 måder at tilføje en måned til en dato i MariaDB

  4. Postgresql SQL GROUP BY tidsinterval med vilkårlig nøjagtighed (ned til millisekunder)