ich habe die Aufgabe erhalten, ein SQL-Skript zu schreiben, dass ohne
Benutzereingriff Werte aus einer Oracle-DB ausliest.
Da ich sehr geringe Kenntnisse habe, möchte ich um ein paar Tipps bitten:
Aufgabenbeschreibung:
Von einem NT-Rechner greife ich auf einen UNIX-Rechner zu. Beide Rechner
besitzen SQL und Oracle. Die ausgelesenen Daten sollen in eine Textdatei
geschrieben werden.
Wie könnte so ein SQL-Skript aussehen ?
Weitere Fragen :
Wie könnte ein SQL-Befehl zu folgenden Abfragen aussehen:
a) Welche Tabellen enthält die Oracle-DB ?
> select …?
b) Wie lese ich aus einer Tabelle x die Werte a b über den Zeitraum z, B,:
2.05.2000 bis 4.05.2000 aus ?
>…?
c) Wie schreibe ich diese in eine Textdatei ?
>…?
e) Wo kann ich weitere Informationen zu meiner Aufgabe erhalten ?
…
ich bin zwar auch nicht der sql-profi, hab aber schon mal unter aix ein paar skripte geschrieben, die daten aus oracle holen. hier meine vorschläge :
a) Welche Tabellen enthält die Oracle-DB
> select * from all_tables
—> bringt alle tabellen dieser instanz. „all_tables“ ist eine eigene oracle-tabelle, die alle tabellen und noch einige info’s zu ihnen enthält (z.b. owner)
b) Wie lese ich aus einer Tabelle x die
Werte a b über den Zeitraum z, B,:
2.05.2000 bis 4.05.2000 aus ?
wenn du irgendein feld in der tabelle hast, welches das datum enthält, dann ginge das so :
>select a b from x where datum >= 20000502 and datum textdatei.txt
oder in den einzelnen befehlen des scripts indem du dann auch hintendran >textdatei.txt oder >>textdatei.txt hängst.
das einfache „>“ überschreibt den inhalt der textdatei also nur am anfang verwenden, das doppelte „>>“ fügt den output in der textdatei hintendran.
e) Wo kann ich weitere Informationen zu
meiner Aufgabe erhalten ?
…
wenn ihr oracle habt, dann solltet ihr auch diverse handbücher dazubekommen haben und dort sollte zumindest eine sql-quickreference dabeibeisein.
so - ich hoffe, das hilft dir schon etwas weiter.
wenn ihr oracle habt, dann solltet ihr
auch diverse handbücher dazubekommen
haben und dort sollte zumindest eine
sql-quickreference dabeibeisein.
so - ich hoffe, das hilft dir schon etwas
weiter.
Genauer gesagt wird es sich dabei um Online-Dokumentationen in doch recht großem Umfang handeln und zumindest teilweise direkt mitinstalliert.
Aufgabenbeschreibung:
Von einem NT-Rechner greife ich auf einen
UNIX-Rechner zu. Beide Rechner
besitzen SQL und Oracle. Die
ausgelesenen Daten sollen in eine
Textdatei
geschrieben werden.
Wie könnte so ein SQL-Skript aussehen ?
Du kannst entweder die ausgabe des scripts mit > bzw. >> am command prompt umleiten, oder aber die Kommandos "spool " bzw. „spool off“ verwenden (wenn Du das SQL*Plus von Oracle verwendest, andere Programme könnten diese Befehle nicht verstehen, da sie nicht Teil des SQL-Standards sind).
Weitere Fragen :
Wie könnte ein SQL-Befehl zu folgenden
Abfragen aussehen:
a) Welche Tabellen enthält die Oracle-DB
?
> select …?
s.u. („select * from all_tables;“ wobei Du wirklich alle Tabellen nur bekommst, wenn Du dabei als User „sys“ eingestiegen bist.)
b) Wie lese ich aus einer Tabelle x die
Werte a b über den Zeitraum z, B,:
2.05.2000 bis 4.05.2000 aus ?
>…?
s.u. zur Datumsformatierung sollte man allerdings immer die funktion to_date verwenden, also „select a, b from x where datecol between to_date(‚02052000‘,‚DDMMYYYY‘) and to_date(‚04052000‘,‚DDMMYYYY‘);“ wobei datecol die spalte in x ist, die Dir als Auswahlkriterium dienen soll.
c) Wie schreibe ich diese in eine
Textdatei ?
>…?
mit >, >> oder spool (siehe oben)
e) Wo kann ich weitere Informationen zu
meiner Aufgabe erhalten ?
…
In der Oracle Doku (ist ziemlich umfangreich und hilft Dir sicher weiter)
Hi,
zunächst einmal: Wenn Du geringe Kenntnisse hast, ist es evtl. besser, ein Tool zu nehmen. Du kannst T.O.A.D. ausprobieren, das hat einen Datenbank-Navigator, mit dem Du alle Tabellen siehst, und unter anderem auch Tabelleninhalte exportieren kannst. Eine 30-Tage-Testversion findest Du unter: http://www.quest.com/download.asp?body=/emaildatabas…
Ich finde das Tool klasse!
a) Welche Tabellen enthält die Oracle-DB
?
> select …?
Wie meine Vorgänger schon sagten: select … from all_tables;
all_tables ist eine View , die alle Dir zugänglchen Tabellen beinhaltet (alle eigenenen + alle, auf die Du Zugriffsberechtigung hast).
select … from user_tables zeigt alle eigenen Tabellen.
Als System eingeloggt, bzw. mit dem dba-Privileg , siehst Du unter dba_tables wirklich alle.
Empfehlenswert ist für Deine Zwecke wahrscheinlich eher user_tables.
b) und c) sind ja schon abschließend behandelt worden.