Ich habe schreibgeschützten Zugriff auf eine Datenbank auf einem Remoteserver. So kann ich ausführen:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Aber auf diesem Server habe ich keine Berechtigung zum Erstellen / Speichern einer Datei. Daher muss ich dies auf meinem lokalen Computer tun.
Wie kann ich beim Herstellen einer Verbindung zur entfernten Datenbank einen Befehl ausführen, um die Datei auf meinem lokalen Computer anstelle des entfernten Servers zu speichern?
Oder wie kann ich einen Linux-Befehl ausführen, um eine Verbindung zur entfernten Datenbank herzustellen, eine Abfrage auszuführen und die Ausgabe als Datei auf meinem lokalen Computer zu speichern?
quelle
psql
ein Skript einzugeben. Beginnen Sie mitBEGIN
, und führen Sie dann Ihre\copy
Befehle ausCOMMIT
. Oder verwenden Siepsql -f
, um ein Skript auszuführen, anstatt ein Here-Dokument zu verwenden.-A
anstelle von-P format=unaligned
und auch ich denke, Sie brauchen eine-P fieldsep=,
Der Linux-Befehl lautet:
quelle
-t -P format=unaligned
diesen Befehl ergänzen , erhalten Sie etwas Näheres, z. B. eine fehlerhafte CSV-Datei mit Pipe-Begrenzung, aber Pipe-Zeichen im Text werden nicht maskiert, sodass sie ungültig sind.-P fieldsep=','
dass dies noch wahrscheinlicher zu Fehlern führt, wenn Sie nicht entkommen.-P fieldsep_zero=on
wäre in Ordnung, wenn Sie nichts dagegen hätten, durch Null-Bytes getrennten Text zu analysieren, da Null-Bytes in derpsql
Ausgabe natürlich nicht vorkommen können .