Guten Tag,
wer kann mit weiterhelfen? Wie bekomme ich in Oracl gespeicherte Worddokumente in einem Stück lesbar wieder heraus. Und wenn das geht, was ich sehr hoffe, wie bekomme ich „sie“ wieder hinein? Wäre schön, wenn es jemanden gäbe, der es mir in verständlichen Worten, bin noch absoluter Anfänger, erklären könnte. Danke.
Hallo,
Oracle bietet bei Registrierung eines kostenlosen Accounts ein kostenloses Datenbank-Tool an. Dieses heisst SQL Developer. Hier muss man einmal die Verbindungsdaten zur ORACLE-DB eintragen, dann sucht man sich die Tabelle aus, die die Word-Dokumente enthält, geht auf das entsprechende Feld (gekennzeichnet mit BLOB), dann rechte Maustaste, exportieren, BLOB-Inhalt speichern unter … fertig.
Via Script einen Binärstrom erzeugen und den lesend und schreibend auswerten, das ist wiederum nicht ganz so einfach, geht natürlich auch, aber dazu muss man sich erst mal klarmachen, mit welcher Technologie man auf die DB zugreift (Delphi, Java,…).
Viele Grüße, hoffe ich konnte ein bissle helfen 
Markus Süße
Hallo, nochmal ich.
habe hier von einem meiner Projekte den Code mal extrahiert, der für das Auslesen von Binärdaten verwendet wird (Borland Delphi 5 auf Oracle 9 DB).
Habe ein Quantum Express Grid verwendet, die anderen Steuerelemente sind selbsterklärend.
Code:
*****Anfang*****
procedure TfMain.btnExportClick(Sender: TObject);
var
locator: TLOBLocator;
filepath: String;
v_path: String;
i: Integer;
begin
// Jetzt muss in einer Schleife der Bereich mit den Binärdaten exprotiert werden.
// 1. Existiert Verzeichnis, wenn nein, anlegen
// 2. Datei mit korrektem Namen und Typ dort ablegen
// Existiert der Pfad im Filesystem ?
If CheckPath = True then
begin
screen.Cursor := crHourglass;
v_path := ExtractFilePath(ParamStr(0))+‚Dokumente‘;
With oqBLOB do
begin
If Grid.SelectedCount >= 1 then
begin
For i := 0 to Grid.SelectedCount - 1 do
begin
with Grid.DataSource.DataSet do
begin
GotoBookmark(pointer(Grid.SelectedRows[i]));
filepath := v_path+Fields[0].Text+’_’+Fields[2].text+’.’+lowercase(Fields[1].text);
try
self.oqDOK.Close;
oqDOK.SetVariable(‚ID‘, Fields[0].AsInteger);
self.oqDOK.Execute;
locator := oqDOK.LOBField(‚Filecontents‘);
//locator := oqBLOB.LOBField(‚Filecontents‘);
if not locator.IsNull then
begin
locator.Seek(0, soFromBeginning);
If not FileExists(filepath) then
begin
locator.SaveToFile(filePath);
end;
end;
except
raise EInOutError.Create(‚Dokument kann nicht gespeichert werden!‘);
end;
end;
end;
end
else
begin
oqBLOB.Execute;
oqBLOB.First;
for i := 0 to dsBLOB.RecordCount - 1 do
begin
filepath := v_path+oqBLOB.FieldAsString(0)+’_’+oqBLOB.FieldAsString(2)+’.’+lowercase(oqBLOB.FieldAsString(1));
try
locator := oqBLOB.LOBField(‚Filecontents‘);
if not locator.IsNull then
begin
locator.Seek(0, soFromBeginning);
If not FileExists(filepath) then
begin
locator.SaveToFile(filePath);
end;
end;
except
raise EInOutError.Create(‚Dokument kann nicht gespeichert werden!‘);
end;
oqBLOB.Next;
end;
end;
screen.Cursor := crDefault;
end;
end;
end;
*****Ende*****
Hallo Sarah,
das Abspeichern bzw. Auslesen dieser Daten ist in der Oracle-Datenbank sehr einfach.
Du musst ein Feld des Typs „BLOB“ anlegen. Also einfach statt „NUMBER()“ ein Feld dieses Typs beim Anlegen einer Tabelle definieren.
Danach ist es eher von Interesse mit welcher „Anwendung“ du auf die Datenbank zugreifst. Wenn du mit Java programmierst kannst du einfach mit Hilfe von „getBlob“ die Daten in einen „BinaryOutputStream“ pumpen und diese von dort ablegen oder weiterverarbeiten z.B. zur Anzeige in Word.
Wie du siehst ist die Anlage in der Oracle ein Klacks, interessant wird es erst bei deiner Anwendung.
Gruß
Jörg
Sorry, eben erst gesehen.
Wahrscheinlich handelt es sich um eine BLOB-Spalte.
Das hängt von Deinem Entwicklungssystem ab. Wenn en nur einmalig sein muss, dann nimm den TAOD (googeln) und speichere den Inhalt der BLOB Column in ein File.
Wenn Du TOAD nicht bekommen kannst, musst du ein DBMS-Packages aus dem Schema SYS benutzen, leider kann ich das nicht aus dem Kopf, bin gerade zu Hause… In den Packages gibt es eine Funtion zum SPeichern in ein Filesystem (In das, wo die DB läufte…)
BB Nic