Seiten

Freitag, 19. März 2010

Oracle: Per Trigger Website in CLOB einlesen

Die Tabelle für das Beispiel

CREATE TABLE t_pages
(
  pages_id NUMBER,
  url VARCHAR2(80),
  page CLOB
);

-- Sequenz für das Increment der ID
CREATE SEQUENCE t_pages_autoinc_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOMAXVALUE;

-- Trigger zum Aufruf der Sequenz
CREATE OR REPLACE TRIGGER t_pages_autoinc_trigger
BEFORE INSERT ON t_pages
FOR EACH ROW
BEGIN
  SELECT t_pages_autoinc_seq.NEXTVAL INTO :NEW.pages_id FROM DUAL; 
END;
/

Der Trigger löst folgendes aus:
Wird ein Datensatz mit einer gültigen URL eingefügt, wird die Seite aufgerufen und der HTML-Code der Seite in den CLOB geschrieben.

CREATE OR REPLACE TRIGGER insert_page
BEFORE INSERT ON t_pages
FOR EACH ROW

DECLARE 
  req  UTL_HTTP.req;
  resp UTL_HTTP.resp;
  page CLOB;

BEGIN    
  -- Verbindung aufbauen
  req := UTL_HTTP.begin_request(:new.url);
  -- Als Mozilla ausgeben
  UTL_HTTP.set_header(req, 'User-Agent', 'Mozilla/4.0');       

  resp := UTL_HTTP.get_response(req);    
  UTL_HTTP.read_text(resp, page, 50000);             
  UTL_HTTP.end_response(resp);    
  :new.page := page;  
   
EXCEPTION
  WHEN
    UTL_HTTP.end_of_body
  THEN
    UTL_HTTP.end_response(resp);
END;
/

Beispiel zum Aufrufen des Ganzen

INSERT INTO t_pages (url)
VALUES ('http://www.ufz.de/');

Keine Kommentare:

Kommentar veröffentlichen