Externe tafel is een van de belangrijke functies in Oracle , we zullen de externe tabel in Oracle verkennen met een voorbeeld in dit bericht
Wat zijn EXTERNE TABELLEN in Oracle?
1) Externe tabellen zijn alleen-lezen tabellen waarin de gegevens zijn opgeslagen in platte bestanden buiten de database
2) U kunt de externe tabelfunctie gebruiken om toegang te krijgen tot externe bestanden alsof het tabellen in de database zijn.
3) Wanneer u een externe tabel maakt, definieert u de structuur en locatie met in orakel. In principe sla je de metadata gewoon op in het orakel
4) Wanneer u de tabel opvraagt, leest orakel de externe tabel en geeft de resultaten terug alsof de gegevens in de database waren opgeslagen.
5) De orakelserver biedt twee belangrijke orakelstuurprogramma's om de platte bestanden te lezen
- Oracle_loader:dit wordt gebruikt voor het lezen van platte bestanden met behulp van de Oracle Loader-technologie. Het maakt het in principe mogelijk om de bestanden te lezen die kunnen worden geïnterpreteerd met behulp van SQL loader-technologie
- Oracle_datapump:dit wordt gebruikt voor zowel het importeren als exporteren van gegevens met een platformonafhankelijk formaat
TOEGANG TOT EXTERNE TABELGEGEVENS
Er zijn enkele stappen die moeten worden uitgevoerd om toegang te krijgen tot de externe tabel
- We moeten eerst het commando create directory gebruiken om een directory-object te definiëren dat naar de externe bestandslocatie verwijst
sqlplus "/ as sysdba"Maak directory ext_dir aan als '/export/home/ora/external';
- Gebruikers die toegang hebben tot de externe bestanden moeten lees- en schrijfrechten hebben voor de directory.
Verleen alles in directory ext_dir aan gebruiker;
- Laten we nu enkele bestanden maken of onder de map plaatsen
SQL> Conn user/userSQL> Spool city.lstSQL> Selecteer stad || ‘,’ || staat || ‘,’ || land uit landen;SQL> Spool uit
Nu zou u het bestand city.lst in de map moeten kunnen zien
- Nu moeten we de externe tabel maken met het onderstaande commando
Maak tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organization external ( typ oracle_loaderDefault directory ext_dirAccess parameters( records gescheiden door newlineFields afgesloten door ","( city char(10), staat char(14),country char(13)))Locatie ('city.lst'))PARALLEL 5REJECT LIMIT ONBEPERKT;
Uitleg van elke term
Organisatie extern | Het geeft aan dat gegevens buiten de database worden opgeslagen |
Type | Het is de oracle-driver of API die de externe gegevens voor de database interpreteert. Als u niets opgeeft, is oracle_loader de standaard |
Standaardmap | Het is de maplocatie waar de platte bestanden kunnen worden opgeslagen. De standaardmap wordt ook gebruikt voor het opslaan van de hulpbestanden die zijn gemaakt op basis van de toegang van het orakelstuurprogramma, zoals een logbestand en slechte bestanden. We kunnen meerdere mappen specificeren om de taakverdeling op meerdere schijven te vergemakkelijken |
Toegangsparameters | Hiermee kunt u waarden specificeren van de parameter van de specifieke toegangsdriver voor deze externe tabel |
Locatie | Hiermee kunt u de externe platte bestandsnaam specificeren |
BEPERKTE AFWIJZING | Hiermee kunt u aangeven hoeveel conversiefouten kunnen optreden voordat de oracle-server de bewerking afbreekt en de fout retourneert |
5) GEGEVENS SELECTEREN UIT EXTERNE TABEL
SQL> selecteer * van city_ext;
Dit leest uit city.lst, een bestand op besturingssysteemniveau.
Als het bestand city.lst niet aanwezig is, zou de select-opdracht deze fout veroorzaken
SELECT **ERROR op regel 1:ORA-29913:fout bij het uitvoeren van ODCIEXTTABLEOPEN calloutORA-29400:fout datacartridge KUP-04040:bestand stad.lst in EXT_DIR niet gevondenORA-06512:bij "SYS.ORACLE_LOADER", regel 14ORA- 06512:op regel 1
BEPERKINGEN OP EXTERNE TAFELS
- U kunt geen bewerkingen voor invoegen, bijwerken en verwijderen uitvoeren
- Oracle-indexering niet mogelijk
- Beperkingen niet mogelijk
VOORDELEN VAN EXTERNE TABELLEN IN ORACLE
- a) Query's van externe tabellen worden zeer snel voltooid, ook al is bij elke toegang een scan-ID voor de volledige tabel vereist
- b) U kunt externe tabellen aan elkaar of aan standaard Oracle-tabellen koppelen
- c) We kunnen weergaven maken op de externe tafel
Nieuwe update in 11gR2 voor externe tafel
Met Oracle 11g Release 2 is een nieuwe PREPROCESSOR-clausule geïntroduceerd die een directory-object en script kan identificeren dat wordt gebruikt om de bestanden te verwerken voordat ze door de externe tabel worden gelezen. Deze functie is teruggezet naar 11gR1 (11.1.0.7).
De PREPROCESSOR-component is vooral handig voor het lezen van gecomprimeerde bestanden, omdat ze worden uitgepakt en rechtstreeks naar het externe tabelproces worden doorgesluisd zonder ooit te hoeven worden uitgepakt op het bestandssysteem.
Laten we een voorbeeld nemen om deze parameter beter te begrijpen.
Stel dat de stad.lijst is gecomprimeerd, dan is de bestandsnaam stad.lijst.Z
Maak tabel city_ext(city varchar(10),state varchar(14),country varchar(13))Organization external ( typ oracle_loaderDefault directory ext_dirPREPROCESSOR ext_dir:uncompressAccess parameters( records gescheiden door newlineFields afgesloten door ","( city char( 10),state char(14),country char(13)))Locatie ('city.lst.Z'))PARALLEL 5REJECT LIMIT ONBEPERKT;
Hier zal de PREPROCESSOR-component eerst het bestand city.lst.Z decomprimeren met het commando uncompress voordat de gegevens worden gezocht. Alles zou meteen gebeuren en u hoeft het bestand city.lst.Z niet te decomprimeren
Ontladen/laden van gegevens met behulp van externe Oracle-tabellen
Oracle bood ook ondersteuning voor datapumptechnologie in externe tabellen.
We kunnen de tabel uitladen met behulp van oracle_datadump toegangsstuurprogramma
CREATE TABLE countries_xtORGANIZATION EXTERNAL(TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('countries.dmp'))AS SELECT * FROM landen;
Dit zal landen.dmp aanmaken in de directory. Nu zelfs de tabel landen is verwijderd, kunnen we de gegevens nog steeds bekijken met behulp van de tabel country_xt.
We kunnen zelfs het dumpbestand naar een andere database brengen en vervolgens een externe tabel maken om de gegevens te bekijken
CREATE TABLE countries_xt (city VARCHAR2(10),state VARCHAR2(9),countries VARCHAR2(9))ORGANISATION EXTERNAL (TYPE ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('countries.dmp> _x));Select;Verbeteringen in externe tabellen in 12c-database
Oracle_loader
Locatieclausule kan een wild karakter hebben. * staat voor meervoudig karakter en ? voor één teken.
Fields csv-clausule is geïntroduceerd
Oracle_datapump
We kunnen de gegevens verwijderen met behulp van geavanceerde compressie-optie
Gerelateerde artikelen
ORA-29913 met externe tabellen
Tips voor externe tabellen
Hoe een CLOB-veld te laden met een externe tabel
oracle maakt een tabel zoals geselecteerd