Oracle CLOB mit SQL und VBScript auslesen?

Hallo zusammen,
ich habe folgendes Problem: Eine Oracle-Datenbank, in der eine Menge HTML-Seiten in CLOB-Feldern gespeichert sind, die regelmäßig in Textdateien umgewandelt werden müssen - per Copy und Paste ist das auf die Dauer recht lästig, deshalb soll das Ganze automatisiert werden und per VBScript ablaufen. Ist das überhaupt möglich mit VBScript? Was würde sich sonst anbieten?

Grüße,
Andrea

Hallo,

natürlich ist das möglich. CLOBS gibts in jeder DB.
Den DB-Zugriff kannst du ja erstmal mit ODBC realisieren. Dann kannst du auf die Oracle zugreifen.

Ich kenne mich eher in Java aus. Da gehts ganz einfach: den CLOB auslesen und als Stream einlesen. Fertig. Wird in VB ganz ähnlich gehen. (Man muss vermutlich einen Stream dafür aufmachen, weil die Größe nicht fest steht.)

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
ja, DB-Zugriff mit ODBC ist schon klar, Stream ist mir auch klar, aber anscheinend finde ich kein geeignetes Stream-Objekt.
Habe es mit ADODB.Stream versucht. Beim Versuch, den Stream mit adoStream.SaveToFile zu speichern kommt jedoch immer die Fehlermeldung, dass in die Datei nicht geschrieben werden kann. Ausgabe von adoStream.ReadText in eine Messagebox liefert eine leere Messagebox. Da der ADODB.Stream eine Sicherheitslücke im IE darstellt, kann es gut sein, dass das Objekt auf unseren Rechnern deaktiviert ist (wir haben hier keine Adminrechte :-/).
Gibt es eine andere Möglichkeit, als den ADODB.Stream zu verwenden?
Ich poste mal meinen Code mit, vielleicht überseh ich ja auch bloß irgendwas…
set odbcConnection = CreateObject(„ADODB.Connection“)
set adoStream = CreateObject(„ADODB.Stream“)
odbcConnection.ConnectionString = conStr
odbcConnection.Open
set recordSet = odbcConnection.execute(sql)

dim count
count = 0
while not recordSet.EOF
adoStream.Charset = „UTF-8“
adoStream.Type = 2
adoStream.Open
adoStream.WriteText recordSet.fields(„clob“).Value
'adoStream.SaveToFile(„C:\log.txt“)
msgbox adoStream.ReadText
adoStream.Close
count = count+1
recordSet.MoveNext
wend

msgbox(count)
set odbcConnection = nothing
set recordSet = nothing
set adoStream = nothing

Grüße,
Andrea

Hallo an dieser Stelle.

Vielleicht findet sich im Downloadbereich dieses Buchs hier http://www.galileocomputing.de/dateien/gp/dateiliste…
irgendeine Inspiration.

HTH
mfg M.L.

Lösung
Danke für den Tipp, habe es aber dann gestern abend zu Hause doch recht schnell hingekriegt, während ich im Büro einfach nicht weitergekommen bin (direkte Sonneneinstrahlung auf unklimatisierte Büroräume verlangsamt das Denken :wink:

Falls jemand mal was Ähnliches machen will, hier meine beiden Lösungen:

’ Lösung mit TextStream-Objekt
dim odbcCon, rs
set odbcCon = CreateObject(„ADODB.Connection“)
odbcCon.Open „db“, „user“, „passwd“
set rs = odbcCon.Execute(„Select name, clobfeld from clobtest“)

dim fso, f, ts
dim filename
set fso = CreateObject(„Scripting.FileSystemObject“)
while not rs.EOF
filename = „export“ & rs.fields(„name“) & „.html“
fso.CreateTextFile filename
set f = fso.GetFile(filename)
set ts = f.OpenAsTextStream(2,-2)
ts.Write rs.fields(„clobfeld“)
rs.moveNext
wend

set odbcCon = nothing
set rs = nothing
ts.close
set fso = nothing
set ts = nothing
set f = nothing

’ Lösung mit ADODB.Stream
dim odbcCon, rs, str
dim conStr
set odbcCon = CreateObject(„ADODB.Connection“)
set str = CreateObject(„ADODB.Stream“)
odbcCon.Open „db“, „user“, „passwd“
set rs = odbcCon.Execute(„Select name, clobfeld from clobtest“)
while not rs.EOF
str.open
str.WriteText rs.fields(„clobfeld“)
str.SaveToFile „export“ & rs.fields(„name“) & „.html“, 2
str.close
rs.moveNext
wend

set odbcCon = nothing
set rs = nothing
set str = nothing

Grüße,
Andrea