PostgreSQL: exporter les données résultant de la requête SQL vers Excel / CSV
je dois exporter les données résultantes d'une requête dans PostgreSQL à Excel/CSV.
J'utilise PostgreSQL 8.2.11
.
SQL error:
ERROR: relative path not allowed for COPY to file
In statement:
COPY (select distinct(m_price) from m_product)TO '"c:auto_new.txt"';
6 réponses
Exemple avec style Unix nom de fichier:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv' format csv;
Lire le manuel COPY
(lien vers la version 8.2).
Vous devez utiliser un chemin absolu pour le fichier cible. Assurez-vous de citer des noms de fichier doubles avec des espaces. Exemple pour MS Windows:
COPY (SELECT * FROM tbl)
TO E'"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' format csv;
PostgreSQL 8.2standard_conforming_strings = off
par défaut, vous devez doubler les antislashs, parce que \
est un caractère spécial et interprété par PostgreSQL. Fonctionne dans n'importe quelle version. C'est tout dans la documentation:
nom du fichier
Le chemin d'accès absolu du fichier de sortie. Les utilisateurs de Windows peuvent avoir besoin d'utiliser un
E''
string et double backslashes utilisés comme séparateurs de chemin.
Ou la syntaxe moderne avec standard_conforming_strings = on
(par défaut depuis Postgres 9.1):
COPY tbl -- short for (SELECT * FROM tbl)
TO '"C:\Documents and Settings\Tech\Desktop\myfile1.csv"' (format csv);
Ou vous pouvez utilisez aussi les slashes vers l'avant pour les noms de fichiers sous Windows.
Une alternative est d'utiliser le méta-commande \copy
du client terminal par défaut psql
.
vous pouvez aussi utiliser une interface graphique comme pgadmin et copier / coller à partir de la grille de résultats pour exceller pour les petites requêtes.
réponse étroitement liée:
solution similaire pour MySQL:
PostgreSQL 9.4 pour créer un fichier CSV avec l'en-tête Ubuntu:
COPY (SELECT * FROM tbl) TO '/home/user/Desktop/result_sql.csv' WITH CSV HEADER;
Remarque: Le dossier doit être accessible en écriture.
Cela a fonctionné pour moi:
COPY (SELECT * FROM table)
TO E'C:\Program Files (x86)\PostgreSQL\8.4\data\try.csv';
dans mon cas, le problème était avec la permission d'écrire dans un dossier spécial (bien que je travaille en tant qu'administrateur), après avoir changé le chemin vers le dossier de données original sous PostgreSQL j'ai eu du succès.
plusieurs outils GUI comme Squirrel, SQL Workbench / J, AnySQL, ExecuteQuery peuvent exporter vers des fichiers Excel.
la plupart de ces outils sont listés dans le wiki PostgreSQL:
http://wiki.postgresql.org/wiki/Community_Guide_to_PostgreSQL_GUI_Tools
Si vous avez d'erreur du type "ERREUR: impossible d'ouvrir le serveur de fichier "/fichier": Permission denied" vous pouvez résoudre le problème:
J'ai traversé le même problème, et c'est la solution que j'ai trouvée: Créer un nouveau dossier (par exemple, tmp) sous /home $ cd /home faire postgres le propriétaire de ce dossier $ chown-R postgres: postgres tmp copie dans tmp les fichiers que vous voulez écrire dans la base de données, et assurez-vous qu'ils sont la propriété de postgres. C'est tout. Tu devrais être en affaires après ça.
le script correct pour postgres (Ubuntu) est:
COPY (SELECT * FROM tbl) TO '/var/lib/postgres/myfile1.csv';