Ich verwende psql, \dt
um alle Tabellen in einer Datenbank aufzulisten, und ich muss die Ergebnisse speichern.
Wie lautet die Syntax zum Exportieren der Ergebnisse eines psql-Befehls in eine Datei?
postgresql
psql
pstanton
quelle
quelle
Antworten:
Aus psqls Hilfe (
\?
):Die Befehlsfolge sieht folgendermaßen aus:
quelle
\o
wird es ausgeschaltet.\?
nicht in die Datei. :(\o queries-output.txt
leitet alle nachfolgenden Befehle o / p in die benannte Datei um,queries-output.txt
und durch Eingabe\o
(erneut an der psql- Eingabeaufforderung) wird dieses Umleitungsverhalten zurückgesetzt.Der
\o
Befehl psql wurde bereits von jhwist beschrieben.Ein alternativer Ansatz besteht darin, mit dem
COPY TO
Befehl direkt in eine Datei auf dem Server zu schreiben. Dies hat den Vorteil, dass es in einem einfach zu analysierenden Format Ihrer Wahl ausgegeben wird - anstelle des tabellarischen Formats von psql. Es ist auch sehr einfach, mit in eine andere Tabelle / Datenbank zu importierenCOPY FROM
.NB! Dies erfordert Superuser-Berechtigungen und schreibt in eine Datei auf dem Server .
Beispiel:
COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';')
Erstellt eine CSV-Datei mit ';' als Feldtrennzeichen.
Einzelheiten finden Sie wie immer in der Dokumentation
quelle
\copy
Dies ist ein Postgres-Befehl, der für jeden Benutzer verwendet werden kann. Ich weiß nicht, ob es für \ dt funktioniert oder nicht, aber die allgemeine Syntax wird über den folgenden Link reproduziert: Postgres SQL-KopiersyntaxOben wird die Ausgabe der Auswahlabfrage in dem als CSV-Datei bereitgestellten Dateinamen gespeichert
BEARBEITEN:
Für meinen psql-Server funktioniert der folgende Befehl. Dies ist eine ältere Version v8.5
quelle
Verwenden Sie den Parameter o des Befehls pgsql.
quelle
COPY tablename TO '/tmp/output.csv' DELIMITER ',' CSV HEADER;
Mit diesem Befehl wird die gesamte Tabelle als CSV gespeichertquelle
Wenn Sie den folgenden Fehler erhalten haben
ufgtoolspg=> COPY (SELECT foo, bar FROM baz) TO '/tmp/query.csv' (format csv, delimiter ';') ; ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Sie können es folgendermaßen ausführen:
psql somepsqllink_or_credentials -c "COPY (SELECT foo, bar FROM baz) TO STDOUT (format csv, delimiter ';')" > baz.csv
quelle
Verwenden Sie die folgende Abfrage, um das Ergebnis in einer CSV-Datei zu speichern
\ copy (Ihre Abfrage) in den CSV-Header 'file path';
Beispiel
\ copy (Name, Datumsbestellung aus Kaufbestellung auswählen) in den Lebenslauf-Header '/home/ankit/Desktop/result.csv';
Hoffe das hilft dir.
quelle
Ich gehe davon aus, dass es dafür einen internen psql-Befehl gibt, aber Sie können den
script
Befehl auch über das Paket util-linux-ng ausführen :quelle
Dieser Ansatz funktioniert mit jedem psql-Befehl vom einfachsten bis zum komplexesten, ohne dass Änderungen oder Anpassungen am ursprünglichen Befehl erforderlich sind.
HINWEIS: Für Linux-Server.
MODELL
BEISPIEL
MODELL
sudo -u postgres psql [some_db] -c "$(cat sqlcmd)" >>sqlop 2>&1
BEISPIEL
sudo -u postgres psql some_db -c "$(cat sqlcmd)" >>sqlop 2>&1
cat sqlop
Getan! Vielen Dank! = D.
quelle
Ansatz für Docker
über den Befehl psql
oder Abfrage aus SQL-Datei
quelle