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