split CLOB-Feld in die Tabelle Struktur

Habe ich Feld in einer Oracle-Datenbank vom Typ CLOB. Ich möchte split dieses Feld in mehrere Spalten und Zeilen. Hier ist ein Beispiel für den Inhalt:

4:true5:false24:<p>option sample 1.</p>4:true22:<p>option sample 2.</p>5:false23:<p>option sample 3.</p>5:false22:<p>option sample 4.</p>5:false 

Das Ergebnis sollte wie folgt Aussehen:

- ID-EBENE ANSWER_OPTION WERT 
1 3 option Beispiel 3 falsch 
1 4 option Probe 4 false 
2 3 option Beispiel 3 falsch 
4 3 option Beispiel 3 wahr 
3 2 option Beispiel 2 falsch 
1 2 option " Beispiel 2 wahr 
2 1 option Beispiel 1 wahr 
2 4 option Probe 4 false 
4 die option " 1 Beispiel 1 falsch 
2 2 option Beispiel 2 falsch 
4 option 2-Beispiel 2 falsch 
1 1 option Beispiel 1 falsch 
3 4 die option Probe 4 false 
4 4 option Probe 4 false 
3 3 option Beispiel 3 falsch 
3 1 option Beispiel 1 wahr

Wir haben die folgenden Anweisung erstellt, die das Ergebnis oben.

with guest_string as 

(    select qsn.id                                id 

     ,      dbms_lob.substr( qsn.guest, 2000, 1 ) answer_options

     from   mneme_question qsn

     where qsn.id < 10 

)

select distinct id
,      level
,      substr(regexp_substr( answer_options'<p>[^<]+', 1, level, 'i'), 4) ANSWER_OPTION
,      substr(regexp_substr( answer_options, '(true|false)', regexp_instr( answer_options, '</p>', 1,  1), level, 'i'), 1) VALUE
from   guest_string
connect by regexp_substr( answer_options, '<p>[^<]+', 1, level, 'i') is not null

Das problem mit diesem code ist es dauert viel zu lange, um die split-alle Aufzeichnungen, die wir haben. Wir hatten es abgeschnitten auf 10 Zeilen (5 Zeilen nehmen, 0,25 sec, 10 dauert 16 Sekunden, 15 Zeilen dauert etwa über 2,5 Minuten). Wir haben derzeit 30000 Zeilen, und Sie werden wachsen. Im moment können wir nicht ändern, die software zu ändern, das datamodel, so werden wir zu tun haben, diese ad hoc.

Unserer aktuellen Ansatz ist das erstellen einer Prozedur, die aufgerufen wird, für jeden Datensatz, aber es wäre besser, um eine schnellere Analyse. Hat jemand einen Vorschlag, wie Sie ein Skript erstellen, können Sie dies in einer angemessenen Zeit. Wir können dies tun in der Nacht, aber vorzugsweise sollte es nicht länger dauern als 2 Minuten.

BTW wir in der Zukunft bauen könnte, irgendeine Art von Mechanismus, um zu bestimmen, welche Datensätze bereits analysiert, aber auch die erfordert irgendeine form der Aufdeckung von bereits geparsten Felder, die sich geändert haben in der Zwischenzeit. Wir haben keine Zeit zu tun, noch, so jetzt müssen wir rohe Analyse so schnell wie möglich.

Dank

InformationsquelleAutor Sigur | 2012-03-12

Schreibe einen Kommentar