Mittwoch, Januar 28, 2009

Export von Query-Results aus sqlplus

in Lutz Fröhlichs Oracle 11-Buch habe ich folgende hübsche Möglichkeit gefunden, Query-Ergebnisse nach Excel zu exportieren:

1. in sqlplus: set markup html on
2. spool aktivieren (mit einer htm-Zieldatei)
3. Query ausführen
4. erzeugtes spool-file ggf. anpassen (man kann überflüssige Ausgabe natürlich auch über sqlplus-Einstellungen unterdrücken)
5. Dateiendung in xls ändern und mit Excel öffnen

Und, wenn ich schon dabei bin, hier auch noch mal der Klassiker zur Erzeugung von csv-Dateien:

1. in sqlplus: set colsep ";" (oder welches Trennzeichen auch immer)
2. spool aktivieren + Query ausführen

Samstag, Januar 10, 2009

Oracle Survival Guide

nachdem mir der mitp-Verlag freundlicherweise zwei Oracle-Bücher zu Rezensionszwecken überlassen hat, gibt's in diesem Blog jetzt auch Buchbesprechungen. Die erste davon betrifft den Oracle Survival Guide von Cornel Brücher, Frank Jüdes, Mario Haupt, Uwe Küchler und Andreas Takano, erschienen 2008 - hier der zugehörige Link.

Der relativ schmale Band (knapp 300 Seiten) wendet sich an Einsteiger im Bereich der Programmierung mit Oracle-Datenbanken und bemüht sich, eine möglichst knappe Zusammenfassung relevanter Informationen zu liefern. Die Autoren sehen ihr Buch als "'Schweizer Messer' für Oracle-Entwickler und -Supporter" (was ein Oracle-Supporter ist, weiß ich nicht ganz genau, habe aber eine Theorie) und begründen ihre kompakte Darstellung damit, dass man aus den üblichen Einführungen zum Thema in der Regel höchstens 10% für das Tagesgeschäft benötige. Der Band beginnt mit einer Einführung zum Thema SQL (25 Seiten), stellt PL/SQL vor (20 Seiten), erläutert (sehr knapp) Datentypen in SQL und PL/SQL und sql*plus als Client-Tool, beschreibt die Tools SQL*Loader, exp und imp, gibt ein paar Informationen zum data dictionary und Hinweise zu Installation und sql-net-Zugriff. Dann folgt ein recht umfangreiches Kapitel zum DB-Zugriff über diverse Programmiersprachen (von C++ über Java, C#, Perl, Php bis zu Ruby - insgesamt ca. 70 Seiten). Die folgenden Kapitel beschäftigen sich mit Oracle-LDAP, mit UNIX und dem Vi-Editor und mit XML in der Datenbank. Den Abschluss bildet ein Kapitel mit Tipps und Tricks, in dem weitere Hinweise zur Arbeit mit SQL und PL/SQL enthalten sind.

Beim Zusammenfassen der Kapitelliste ist mir noch mal zu Bewusstsein gekommen, dass das eine sehr bunte Mischung ist, und dass ich der Gliederung nicht in allen Punkten folgen konnte. Manche Kapitel sind auch so knapp geworden, dass ich mich frage, ob da ein Kapitel überhaupt noch sinnvoll ist - das zu sql*plus umfasst z.B. 1,5 Seiten. Neben der Quantität scheint mir auch die Qualität der Einzelkapitel nicht einheitlich zu sein. Nun gehöre ich wahrscheinlich nicht genau in die Zielgruppe hinein, da es nicht das erste Buch zum Thema ist, das ich lese. Außerdem habe ich in den letzten Jahren nur noch Darstellungen von Autoren wie Tom Kyte, Cary Millsap und Jonathan Lewis gelesen, die einen sehr hohen Anspruch an ihre Bücher stellen, so dass meine Anforderungen an ein Buch zu Oracle recht hoch sind. Unter diesen Vorbedingungen muss ich sagen, dass mir die Lektüre des Bändchens nicht viel gebracht hat. Ein erstes Problem ist, dass an vielen Stellen der Hinweis fehlt, für welches Release des Oracle-Servers Aussagen gemacht werden (so etwa wenn im SQL-Kapitel die Funktion SYS_CONNECT_BY_PATH angesprochen wird, die meiner Erinnerung nach erst in 10g eingeführt wurde). Darüber hinaus sind viele Aussagen so knapp zusammengefasst, dass wichtige Informationen unter den Tisch fallen (z.B. bei der Behandlung von NULL-Werten im SQL-Kapitel). Einige Aussagen sind auch unabhängig von Verkürzungen sehr zweifelhaft (etwa wenn auf S. 36 der Vorschlag gemacht wird, ein Commit für jeweils 10.000 Sätze in einer PL/SQL-Schleife unterzubringen, um das Volllaufen von Rollback-Segmenten zu verhindern - bei AskTom kann man zu diesem Vorschlag einige unfreundliche Kommentare lesen). Bei der Vorstellung der Oracle-Utilities habe ich mich gewundert, dass exp und imp statt der aktuelleren Werkzeuge expdp und impdp vorgestellt wurden und dass der Abschnitt zum sql*loader so groß ausfiel, während die External Tables relativ kurz behandelt wurden. Ob man mit den Installations-Hinweisen des Buches viel anfangen kann, weiß ich auch nicht - da würde ich mich wahrscheinlich eher auf eines der umfassenden (allerdings englischsprachigen) Tutorials verlassen, die man im Netz finden kann (z.B. bei Tim Hall auf der OracleBase-Seite). Die ausführliche Darstellung der Programmierschnittstellen zum Oracle-Server stellt vermutlich das Kernstück des Bandes dar - und ist ein Thema, das mich (einen dritt- oder viertklassigen Programmierer) nur am Rande interessiert. Dieses Kapitel könnte jemandem, der erste Versuche unternimmt, mit einer Oracle-Datenbank zu kommunizieren, weiterhelfen.

Davon abgesehen enthält das Buch viele Angaben, die ohne den Kontext nur schwer einzuordnen sind. In diversen Datenbank-Foren begegnet man immer wieder Fragen, die zu den hier gegebenen Antworten passen, Fragen die eine schnelle und kurze Antwort suchen, bei denen aber oft recht schnell klar wird, dass der behandelte Sachverhalt eigentlich viel komplexer ist, als der Fragesteller annimmt, so dass die kurze Antwort ihm mittelfristig wahrscheinlich große Probleme bereitet - die vermeidbar wären, wenn er sich erst einmal mit den Basics des Themas befasst hätte. Das soll jetzt nicht heißen, dass kompakte Darstellung grundsätzlich problematisch wären, aber ab einem bestimmtem Grad der Komprimierung beginnen die Gefahren. Wenn ein Buch dann nicht ausreichend klar strukturiert ist, leidet der praktische Nutzen darunter.

Zu den positiven Aspekten des Bandes zählt immerhin noch, dass bei der Erstellung des Buches "keine Gürteltiere zu Schaden gekommen sind", und auch sonst merkt man, dass die Autoren wohl ihren Spaß an der Produktion des Buchs hatten. Nun bin ich aber eigentlich gar kein Datenbankspezialist, sondern Literaturwissenschaftler und in dieser Eigenschaft habe ich dann doch auch ein wenig unter diversen stilistischen Mängeln gelitten, aber das ist eine andere Geschichte, die ein andermal erzählt werden soll (oder auch nicht).

Sonntag, Januar 04, 2009

star transformation

wieder mal ein Thema, über das ich schon mehrfach gelesen habe, ohne auf die Idee zu kommen, mir die Details zu merken. Da der Herr Rittman hier auch den Verweis auf Jonathan Lewis' ältere Erläuterung der star transformation eingebaut hat, sollte ich alle relevanten Informatonen wieder finden können.