sql >> Databáze >  >> RDS >> Oracle

Externí tabulky Oracle

Externí tabulka je jednou z důležitých funkcí v oracle, externí tabulku v oracle prozkoumáme s příkladem v tomto příspěvku

Co jsou EXTERNÍ TABULKY v Oracle?

1)Externí tabulky jsou tabulky pouze pro čtení, kde jsou data uložena v plochých souborech mimo databázi

2) Můžete použít funkci externí tabulky pro přístup k externím souborům, jako by to byly tabulky v databázi.

3)   Když vytváříte externí tabulku, definujete její strukturu a umístění pomocí v oracle. V podstatě stačí uložit metadata uvnitř oracle

4) Když se dotazujete na tabulku, Oracle přečte externí tabulku a vrátí výsledky stejně, jako kdyby byla data uložena v databázi.

5) Server Oracle poskytuje dva hlavní ovladače Oracle pro čtení plochých souborů

  1. Oracle_loader:Používá se pro čtení plochých souborů pomocí technologie Oracle loader. V zásadě umožňuje číst soubory, které lze interpretovat pomocí technologie SQL loader
  2. Oracle_datapump:Používá se pro import i export dat pomocí formátu nezávislého na platformě

PŘÍSTUP K DATŮM EXTERNÍ TABULKY

Pro přístup k externí tabulce

je potřeba provést několik kroků
  • Nejprve musíme použít příkaz create directory k definování objektu adresáře odkazujícího na externí umístění souboru
sqlplus "/ as sysdba"Vytvořit adresář ext_dir jako '/export/home/ora/external';
  • Uživatelé, kteří budou přistupovat k externím souborům, musí mít oprávnění pro čtení a zápis do adresáře.
Udělit uživateli vše v adresáři ext_dir;
  • Pojďme nyní vytvořit nebo umístit nějaké soubory do adresáře
SQL> Conn user/userSQL> Spool city.lstSQL> Vyberte město || ‘,‘ || stát || ‘,‘ || země ze zemí;SQL> Spool off

Nyní byste měli být schopni vidět soubor city.lst v adresáři

  • Nyní bychom měli vytvořit externí tabulku pomocí níže uvedeného příkazu
Vytvořte tabulku city_ext(city varchar(10),state varchar(14),country varchar(13))Organizace externí  ( zadejte oracle_loaderVýchozí adresář ext_dirPřístupové parametry (záznamy oddělené novým řádkemPole ukončené „,“( city char(10), state char(14),country char(13)))Umístění ('city.lst'))PARALLEL 5REJECT LIMIT UNLIMITED;

Vysvětlení každého termínu

Externí organizace Říká, že data jsou uložena mimo databázi
Typ Je to ovladač oracle nebo rozhraní API, které interpretuje externí data pro databázi. Pokud nic neurčíte, pak je výchozím nastavením oracle_loader
Výchozí adresář Je to umístění adresáře, kde mohou být uloženy ploché soubory. Výchozí adresář se také používá pro ukládání pomocných souborů vytvořených z přístupu ovladače oracle, jako jsou soubory protokolu a špatné soubory. Můžeme určit více adresářů, abychom usnadnili vyvažování zátěže na více discích
Přístupové parametry Umožňuje zadat hodnoty parametru konkrétního přístupového ovladače pro tuto externí tabulku
Umístění Umožňuje vám zadat název externího plochého souboru
LIMIT ODMÍTNUTÍ Umožňuje vám určit, kolik chyb konverze může nastat, než server Oracle operaci přeruší a vrátí chybu

5) VÝBĚR DAT Z EXTERNÍ TABULKY

SQL> vyberte * z city_ext;

Toto bude číst z city.lst, což je soubor na úrovni operačního systému.

Pokud soubor city.lst není přítomen, příkaz select vyvolá tuto chybu

SELECT **ERROR na řádku 1:ORA-29913:chyba při provádění ODCIEXTTABLEOPEN calloutORA-29400:chyba datové kazetyKUP-04040:soubor city.lst v EXT_DIR nenalezenORA-06512:na "SYS.ORACLE_14ORADER", řádek 06512:na řádku 1

OMEZENÍ EXTERNÍCH TABULEK

  1. Nelze provádět operace vkládání, aktualizace a odstraňování
  2. Indexování Oracle není možné
  3.  Omezení nejsou možná

VÝHODY EXTERNÍCH TABULEK V ORACLE

  1. a) Dotazy na externí tabulky jsou dokončeny velmi rychle, i když je při každém přístupu vyžadováno úplné ID skenování tabulky
  2. b) Externí tabulky můžete připojit k sobě navzájem nebo ke standardním věšteckým tabulkám
  3. c) Můžeme vytvářet pohledy na externí tabulce

Nová aktualizace v 11gR2 pro externí tabulku

S Oracle 11g Release 2 je zavedena nová klauzule PREPROCESSOR, která dokáže identifikovat objekt adresáře a skript používaný ke zpracování souborů předtím, než jsou přečteny externí tabulkou. Tato funkce byla zpětně portována na 11gR1 (11.1.0.7).

Klauzule PREPROCESSOR je zvláště užitečná pro čtení komprimovaných souborů, protože jsou rozbaleny a přeneseny přímo do procesu externí tabulky, aniž by bylo nutné je rozbalovat v systému souborů.

Vezměme si příklad pro lepší pochopení tohoto parametru.

Předpokládejme, že je soubor city.list zkomprimován, pak by název souboru byl city.list.Z

Vytvořit tabulku city_ext(město varchar(10),stav varchar(14),země varchar(13))Organizace externí  ( zadejte oracle_loaderVýchozí adresář ext_dirPREPROCESSOR ext_dir:uncompressAccess parameters( záznamy oddělené novým řádkemPole ukončené „,“( město char( 10),znak státu(14),znak země(13)))Umístění ('city.lst.Z'))PARALLEL 5REJECT LIMIT UNLIMITED;

Zde klauzule PREPROCESSOR nejprve dekomprimuje soubor city.lst.Z pomocí příkazu uncompress, než vyhledá data. Vše by se stalo za běhu a vy nebudete muset dekomprimovat soubor city.lst.Z

Uvolnění/načítání dat pomocí externích tabulek Oracle

Oracle také poskytl podporu pro technologii datapump v externí tabulce.

Tabulku můžeme uvolnit pomocí přístupového ovladače oracle_datadump

VYTVOŘTE TABULKU countries_xtORGANIZATION EXTERNAL(TYP ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION ('country.dmp'))JAK VYBERTE *FROM zemí;

Tím se v adresáři vytvoří countries.dmp. Nyní jsou i země v tabulce vynechány, stále můžeme data sledovat pomocí tabulky countries_xt.

Můžeme dokonce přenést soubor výpisu do jiné databáze a poté vytvořit externí tabulku pro sledování dat

CREATE TABLE countries_xt (město    VARCHAR2(10),stát       VARCHAR2(9),země    VARCHAR2(9))EXTERNÍ ORGANIZACE (TYP ORACLE_DATAPUMPDEFAULT DIRECTORY ext_dirLOCATION_t *;'precountries ze zemí.); 

Vylepšení v externích tabulkách v databázi 12c

Oracle_loader

Klauzule o poloze může mít  divoký znak. * znamená více znaků a ? pro jeden znak.

Byla zavedena klauzule csv polí

Oracle_datapump

Data můžeme uvolnit pomocí možnosti pokročilé komprese

Související články

ORA-29913 s externími tabulkami
Tipy k externí tabulce
Jak načíst pole CLOB s externí tabulkou
Oracle vytvořit tabulku podle výběru


  1. Jak získat přístup k PhpMyAdmin bez přihlášení k cPanel

  2. Jak určit velikost tabulek v Oracle

  3. Vytvořte uživatele MySQL v systému Linux pomocí příkazového řádku

  4. Co jsou záznamy PLSQL v Oracle