J'ai un accès en lecture seule à une base de données sur un serveur distant. Je peux donc exécuter:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Mais sur ce serveur, je n'ai pas l'autorisation de créer / enregistrer un fichier, je dois donc le faire sur ma machine locale.
Lorsque je me connecte à la base de données distante, comment puis-je exécuter une commande pour enregistrer le fichier sur ma machine locale au lieu du serveur distant?
Ou, comment puis-je exécuter une commande Linux pour se connecter à la base de données distante, exécuter une requête et enregistrer la sortie sous forme de fichier sur ma machine locale?
la source
psql
un script, en commençant parBEGIN
, puis en faisant vos\copy
commandes, puis aCOMMIT
. Ou utilisezpsql -f
pour exécuter un script plutôt que d'utiliser un document ici.-A
au lieu de-P format=unaligned
et aussi je pense que vous avez besoin d'un-P fieldsep=,
La commande Linux est:
la source
-t -P format=unaligned
à cette commande, vous obtiendrez quelque chose d'un peu plus proche, comme un CSV délimité par un buggy, mais les tuyaux dans le texte ne s'échapperont pas, ce serait donc invalide.-P fieldsep=','
sauf que cela serait encore plus susceptible de provoquer des erreurs en raison du manque de fuite.-P fieldsep_zero=on
serait OK si cela ne vous dérangeait pas d'analyser du texte délimité par des octets nuls, car les octets nuls ne peuvent pas apparaîtrepsql
naturellement dans la sortie.