Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So schreiben Sie mit Oracle SQL*Plus in eine CSV-Datei

[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) ist ein interaktives Tool, das mit jeder modernen Oracle-Installation installiert wird. SQL Plus ermöglicht es Ihnen, über die standardmäßigen Datenbankabfragen mit Batches, Skripten und Berechnungen hinauszugehen, die über den normalen Umfang von Oracle hinausgehen.

Es ist sogar möglich, wie wir weiter unten untersuchen werden, Textdateien wie .csv zu generieren , unter Verwendung der Ausgabe einer bestimmten Datenbankabfrage.

SQL*Plus starten

Abhängig von Ihrer Oracle-Installation haben Sie möglicherweise Zugriff auf eine von vielen verschiedenen Versionen oder „Modi“, in denen Sie die SQL*Plus-Anwendung ausführen können.

SQL*Plus-Befehlszeile

Wenn Sie die SQL*Plus Command-line verwenden möchten , geben Sie einfach sqlplus aus Befehl von Ihrer Shell:

$ sqlplus

Dadurch wird versucht, Sie mit dem Standard zu verbinden Datenbank und Sie werden aufgefordert, Ihre Anmeldeinformationen einzugeben, um sich zu authentifizieren.

Falls Sie eine Verbindung zu einer anderen database herstellen müssen oder verwenden Sie einen anderen user (schema ), versuchen Sie Folgendes und ersetzen Sie bei Bedarf Ihre eigenen Werte:

$ sqlplus schema@//machine.domain:port/database

iSQL*Plus

Wenn Sie Zugriff darauf haben, möchten Sie vielleicht iSQL*Plus verwenden , eine browserbasierte Version des SQL*Plus-Befehlszeilentools.

Besuchen Sie dazu einfach die iSQL*Plus URL für Ihre Datenbank und Installation. Die genaue URL variiert, hat aber normalerweise das folgende Format:http://machine_name.domain:port/isqlplus

SQL*Plus für Windows

Wenn Sie Windows verwenden, gibt es auch eine Windows-GUI-Version von SQL*Plus, die normalerweise über Ihr Startmenü gestartet werden kann:Start > Programs > Oracle > Application Development > SQL Plus .

Ausgabe einer Abfrage in eine Datei

Nachdem Sie nun mit SQL*Plus verbunden sind, können wir mit der Erstellung unserer Datei beginnen.

SQL*Plus-Konfiguration ändern

Der erste Schritt besteht darin, einige SQL*PLus-Systemeinstellungen mit SET zu konfigurieren Aussage.

In diesem Beispiel werden wir diese Einstellungen einmal vor unserer Abfrage und Dateigenerierung manuell ändern, aber falls gewünscht, können Sie die Standardeinstellungen verschiedener Einstellungen in Ihrem User Profile ändern , befindet sich in login.sql Datei.

set colsep ,
set headsep off
set pagesize 0
set trimspool on

Die ersten paar Einstellungen möchten Sie normalerweise nicht ändern, aber wir erklären kurz, was die einzelnen bewirken.

  • colsep ist das Trennzeichen, das zum Teilen Ihrer Spalten verwendet wird. Für eine .csv Datei, dies ist ein einfaches Komma.
  • headsep ist das Trennzeichen für die Kopfzeile (falls Sie eines benötigen). In diesem Beispiel geben wir die Kopfzeile nicht aus, also lassen wir diese off .
  • pagesize ist die Anzahl der Zeilen „pro Seite“. Dies ist eine leicht archaische Einstellung, die zum Drucken ohne zu viele Zeilen pro Seite gedacht ist. Mit einem Wert von 0 verwenden wir keine Seiten, da wir in eine Datei ausgeben. Wenn Sie sich dafür entscheiden, den header anzuzeigen Zeile, legen Sie pagesize fest auf eine sehr große Anzahl (größer als die erwartete Anzahl von Datensatzergebnissen in der Abfrage), sodass Ihre Kopfzeile nur einmal und nicht einmal „pro Seite“ angezeigt wird.
  • trimspool auf on setzen entfernt einfach abschließende Leerzeichen.

Jetzt müssen die letzten beiden Einstellungen je nach Ihrer Anfrage geändert werden.

set linesize #
set numwidth #
  • Für linesize , der # Wert sollte die Gesamtzahl der Ausgabespalten in Ihrer resultierenden Abfrage sein.
  • numwidth ist die Spaltenbreite (Anzahl der Leerzeichen), die bei der Ausgabe numerischer Werte verwendet wird.

SPOOL-Befehl

Hinweis:Der SPOOL Befehl ist nicht verfügbar in der browserbasierten SQL*Plus-Version iSQL*Plus . Um Dateien während der Verwendung von iSQL*Plus zu generieren, ändern Sie die erforderlichen Voreinstellungen so, dass sie direkt in eine Datei ausgegeben werden.

Nachdem unsere Einstellungen vorgenommen wurden, müssen wir SQL*Plus jetzt anweisen, eine Datei auszugeben. Dies geschieht über den SPOOL Aussage.

Während SPOOL ist aktiv , speichert SQL*PLus die Ausgabe jeder Abfrage in der angegebenen Datei.

Daher ist der nächste einzugebende Befehl spool :

spool file_path

Leicht nach vorn springen, nach Wenn Ihre Abfrage eingefügt ist, müssen Sie auch spool anhalten also wird die Dateiausgabe mit spool off geschlossen Befehl:

spool off

Fügen Sie die Abfrage ein

Der letzte Schritt nach dem Ändern der Einstellungen und spool ausgeführt wird, ist Ihre Abfrage einzufügen. In unserem einfachen Beispiel geben wir alle Bücher aus unseren books aus Tabelle.

SELECT
  title,
  primary_author
FROM
  books;

Vergessen Sie nicht das Semikolon, um Ihre Abfrageanweisung abzuschließen, und geben Sie dann den oben erwähnten spool off ein Befehl.

Sie haben mit SQL*Plus eine neue Textdatei mit den Ergebnissen Ihrer Abfrage generiert.

Tipp:Verwenden einer Skriptdatei

Anstatt jede Zeile manuell einzugeben, wird empfohlen, alle Einstellungen in eine neue Skriptdatei einzugeben, die Sie in SQL*Plus mit einem einzigen Befehl ausführen können.

Erstellen Sie eine neue Skriptdatei mit dem EDIT Aussage:

EDIT file_name

Fügen Sie nun die gesamte Skriptbefehlsliste in Ihre neue Datei ein und speichern Sie sie. Den vollständigen Inhalt unseres Beispielskripts finden Sie unten.

set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Um das Skript auszuführen, verwenden Sie einfach den @ Symbol gefolgt vom Dateinamen:

@file_name

Ihr Skript sollte ausgeführt werden und die .csv Datei wie erwartet erstellt.