Oracle
Posts 1-10 of 11
- Back
- Next
-
Benjamin WagnerThe company name is only visible to registered members.Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo,
wir haben hier folgende Anforderung, die mir Mühe macht. Wir setzen den Oracle Instant Client ein, um diverse Parameter in eine Tabelle zu schreiben. Der Aufruf sieht so aus:
echo insert into login_admin.logins (Datum,username,rechnername,IPaddress,Logonserver,LOCAL_ENV,CUSTOM_TEXT) values ((TO_DATE('%DATUM%','DD.MM.YYYY')),'%USERNAME
%','%COMPUTERNAME%','%IPADDRESS%','%LOC%','%LOCAL_ENV%','%CUSTOM_TEXT%'); > %TC_ROOT%\Instant_Client\logon_tool.sql
echo commit; >> %TC_ROOT%\Instant_Client\logon_tool.sql
echo exit >> %TC_ROOT%\Instant_Client\logon_tool.sql
::Insert data into SQL-database
echo Insert into database ...
echo ... can take some seconds
%TC_ROOT%\Instant_Client\sqlplus.exe username/password@database @%TC_ROOT%\Instant_Client\logon_tool.sql
echo.
echo ... done
Das klappt einwandfrei. Jetzt soll ich den Inhalt einer mehrzeiligen Batchdatei in das Feld Custom_Text in der Datenbank eintragen. Mein erster Gedanke war, das per Umgebungsvariablee zu definieren. Leider kann das WIndows aber nicht, sondern verwendet die letzte Zeile in der BAtchdatei als Wert für die Variable. Ich möchte aber den gesamten Inhalt haben. Das Feld CUSTOM_TEXT habe ich als VARCHAR(4000)= deklariert. Wie bekomme ich nun den Inhalt der Datei in diese Feld hinein?
Viele Dank für Denkanstöße.
- 05 Jan 2012, 2:30 pm
-
Thomas Beetz Premium MemberThe company name is only visible to registered members.Re: Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo,
hat dafür Oracle nicht sqlldr erfunden?
Mit freundlichen Grüßen
Thomas Beetz
- 05 Jan 2012, 2:55 pm
-
Benjamin WagnerThe company name is only visible to registered members.Re: Inhalt einer Textdatei in Oracle als varchar2 speichern
Ich habe hier aber keine CSV-DAtei, die importiert werden soll, sondern eine Logdatei, deren INhalt ich in ORacle abspeichern will. Wie bekomme ich den Inhalt einer lokalen Logdatei in Oracle?
- 05 Jan 2012, 3:09 pm
-
Jörg SobottkaThe company name is only visible to registered members.Re^2: Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo Herr Wagner,
Benjamin Wagner schrieb:
Ich habe hier aber keine CSV-DAtei, die importiert werden soll, sondern eine Logdatei, deren INhalt ich in ORacle abspeichern will. Wie bekomme ich den Inhalt einer lokalen Logdatei in Oracle?
Wenn die Datei SO klein ist, dass sie noch in einem Varchar2 Platz hat, würde ich UTL_FILE vorschlagen:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/u_file...
Viele Grüsse
Jörg Sobottka
Delta Energy Solution AG - Oracle (Schweiz) GmbH: Industry Partner of the Year 2011
- 05 Jan 2012, 3:21 pm
-
Peter SchneiderThe company name is only visible to registered members.Re^2: Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo Herr Wagner,
das kommt darauf an, was Sie genau wollen
--> Die Datei soll in einem varchar2(4000)-Feld in einem Datensatz oder
--> zeilenweise (eine Zeile in einem Datensatz) in besagtem varchar2(4000)-Feld abgelegt werden?
und wie die Ausgangslage genau ist.
--> meint lokale Logdatei lokal auf dem Client oder
--> lokal auf dem Server (Der Client kann auch auf dem Server installiert sein)?
Bei lokal auf dem Client und zeilenweisem Speichern der Logdatei ist der SQL-Loader durchaus eine Variante (CSV mit nur einem Feld). Auch eine Menge anderer Lösungen z.B. sed, .. sind möglich.
Bei lokal auf dem Server sind z.B. UTL_FILE, external Table, SQL-Loader Alternativen.
Alles gute im Neuen Jahr!
Peter Schneider
- 05 Jan 2012, 3:37 pm
-
Benjamin WagnerThe company name is only visible to registered members.Re^3: Inhalt einer Textdatei in Oracle als varchar2 speichern
Die Datei liegt lokal auf dem Client. wir möchten hier auswerten, was bei diversen Toolstarts in der Logdatei bereits angesammelt wurde. EInen Zeilenumbruch im Feld benötige ich nicht mal, es soll einfach der Inhalt der Logdatei in einem Feld in der DB landen.
This post was modified on 09 Jan 2012 at 09:30 am.- 06 Jan 2012, 6:26 pm
-
Kai-Uwe Möller Premium MemberThe company name is only visible to registered members.Re^4: Inhalt einer Textdatei in Oracle als varchar2 speichern
Wenn die interesierenden Dateien auf dem Client liegen und klassische Oracle-Client-Tools wie SQL Loader ausscheiden, bleibt das Entwickeln und Verteilen einer entsprechenden Client-Anwendung, die die Logdaten liest und in die Datenbank schreibt.
Falls auf den Clients eine JRE installiert ist, kann man das mit wenigen Zeilen Java-Code bewerkstelligen. Sicher geht es auch mit C# oder .Net, je nach vorhandenem Know-How und Client-Konfiguration. Oder man kopiert die Logs doch besser (automatisch, zeitgesteuert in Intervallen) auf einen Server und macht die Verarbeitung dort.
- 09 Jan 2012, 09:36 am
-
Carsten CzarskiThe company name is only visible to registered members.Re^5: Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo zusammen,
wie wäre es mit einer externen Tabelle - hier ist ein Beispiel für die Error-Logdatei des Apache Webserver. Das sollte doch einfach an ein anderes Tool anpassbar sein.
http://www.oracle.com/webfolder/technetwork/de/community/ape...
Hinweis: Der Tipp ist zwar in der APEX Community, externe Tabellen sind von APEX aber völlig unabhängig und können auch aus der SQL-Ebene heraus genutzt werden.
Beste Grüße
-Carsten Czarski
Deutschsprachige APEX-Community: Tipps, Tricks, Best Practice
http://tinyurl.com/apexcommunity
SQL und PL/SQL: Tipps, Tricks & Best Practice
http://sql-plsql-de.blogspot.com
Twitter: @cczarski @oraclebudb
- 09 Jan 2012, 09:47 am
-
Horst Bößhar Premium MemberThe company name is only visible to registered members.Re^6: Inhalt einer Textdatei in Oracle als varchar2 speichern
Hallo Kollegen,
wie wäre es mit Speichern in CLOB oder BLOB ?
Das sollte gehen. Ich habe das selbst schon durchgeführt.
Längenprobleme gibt es dort kaum.
Grüße aus Bornheim
Horst Bößhar
- 09 Jan 2012, 12:08 pm
-
Sven-Uwe Weller Premium MemberThe company name is only visible to registered members.Re: Inhalt einer Textdatei in Oracle als varchar2 speichern
Obwohl ich generell lieber eine Lösung mittels External Tables bevorzugen würde, scheint mir hier auch ein quick & dirty Ansatz hilfreich zu sein.
Gehe ich recht in der Annahme das das Hauptproblem in fehlenden Windows Zugriff auf den Datei Inhalt liegt?
Der FOR Befehl ist dabei in der Lage den Inhalt einer Datei zeilenweise zu verarbeiten. Sie können dann diesen Inhalt in ein SQL-File schreiben, welches Zeile für Zeile in ihrer Kommentarspalte updatet. Wichtig dabei ist die /F option, für den Zugriff auf das File selbst.
Grobes Beispiel:
for /F "tokens=*" %i in (test.log) do echo "update myTable set comment = comment||chr(10)||chr(13)||'%i;'"
Dieser Befehl hängt die Zeilen aus der Datei test.log als Kommentar in alle Zeilen der Tabelle myTable. Bzw. er bereitet nur das Update Statement dafür vor. Anstelle des Updates, sind sicherlich auch andere Varianten denkbar, wie z.B. die Zeile direkt in ein File zu schreiben, welches dann von einem SQL*Plus Kommando umklammert und später ausgeführt wird.
Es gibt auch eine ganze Menge Restriktionen. z.B. dürften bei der gezeigten Lösung in der Datei kein einzelnen oder doppelten Hochkommas verwendet werden.
An sich ist deshalb von so einer Variante abzuraten und man sollte für eine professionelle Lösung besser auf Tools wie SQL*Loader oder External Tables zurückgreifen.
Viele Grüße
Sven Weller
This post was modified on 09 Jan 2012 at 01:58 pm.- 09 Jan 2012, 1:16 pm
- Back
- Next
