Oracle 11G R2 – Pre-Processing external tables

Mit Oracle 11g R2 ist es möglich bei Einlesen von externen Tabellen ein Pre-Processing (Skript) zwischen zu schalten.
Die Anwendungsbereiche innerhalb des Skriptes sind vielfältig z.B. Daten komprimieren, modifizieren, etc. oder schlicht dieses Feature dazu nutzen, Skripte auszuführen und den Output weiterzuverarbeiten.

Beispiel:

create  directory  list_dir as  ‚/tmp‘;
grant read, write on directory list_dir  to testuser;

create directory execdir as ‚/tmp‘;
grant execute on directory execdir to testuser;

–drop table directory_listing;
create table directory_listing
(
  permission char(10),
  owner          char(8),
  gruppe           char(8),
  mod             char(12),
  filename     char(100)
)
organization external
(
type oracle_loader
default directory list_dir
access parameters
(
records delimited by newline
preprocessor execdir:’list.sh‘
skip 1
load when (permission  != blanks)
fields
(
permission  position (01:10),
owner           position (15:22),
gruppe          position (24:31),
mod              position (40:51),
filename      position (53:120)
)
)
location (‚list.sh‘)
)
reject limit unlimited


— select from this table

select * from directory_listing;

PERMISSION OWNER    GRUPPE   MOD          FILENAME
———- ——– ——– ———— ——————————————————————————————

-rw-rw-rw- root     root     Feb 20 13:18 blup

56 rows selected.


— Inhalt  list.sh

#!/bin/ksh
/bin/ls -la   /tmp

Dieser Beitrag wurde unter Allgemein abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.