sql >> Database >  >> RDS >> Oracle

Oracle externe tabellen

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

  1. 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
  2. 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

  1. U kunt geen bewerkingen voor invoegen, bijwerken en verwijderen uitvoeren
  2. Oracle-indexering niet mogelijk
  3.  Beperkingen niet mogelijk

VOORDELEN VAN EXTERNE TABELLEN IN ORACLE

  1. a) Query's van externe tabellen worden zeer snel voltooid, ook al is bij elke toegang een scan-ID voor de volledige tabel vereist
  2. b) U kunt externe tabellen aan elkaar of aan standaard Oracle-tabellen koppelen
  3. 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


  1. Hoe een onbekend aantal kolommen te draaien en geen aggregaat in SQL Server?

  2. Reset automatische ophogingsteller in postgre

  3. lopende balans berekenen in oracle-query

  4. Geavanceerde databasebewaking en -beheer voor TimescaleDB