Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'ai un peu avancer sur mon problème.
En fait la commande suivante marche bien:
psql -h localhost -p port -U user -d bbd < "%~dp0RequeteSQL\fichier.sql"
Le soucis vient du chemin indiquant l'extraction de mon csv situé dans mon fichier.sql
J'aurai voulu pointer la racine du fichier comme dans mon batch avec "%~dp0 mais cette cmd ne semble pas être reconnu par mon sql et je suis obligé de mettre le chemin en entier.
Voici ce que je fais dans mon sql pour le moment : \copy(requete) TO '"%~dp0fichier.csv' (format csv, ...)
Bonjour,
J'ai trouvé ça sur des forums, ça permet de récupérer un chemin jusqu'à la racine de mon batch en réseau.
Par exemple:
set path=%~dp0
echo %path%
Ca me renvoie : '\\reseau\...\...\racineDeMonBatch'
Alors que si j'utilise echo %CD% il me renvoie le répertoire qu'il utilise par défaut, à savoir : C:\Windows
Bonjour!
Je tente en vain de faire des extractions de requêtes sur un réseau (via cmd psql). Je voudrais que mon batch marche même s’il est déplacé, donc le principe serait de faire comme pour les chemins relatifs en local (testé en local, ça marche nickel). A la place de .\ je voulais donc mettre %~dp0
Par exemple : psql -h localhost -p port -U user -d bbd < %~dp0RequeteSQL\fichier.sql
Mais le chemin n’est pas reconnu (à cause des espaces et accents dans les noms des dossiers je pense). Mais si je mets des « » autour du chemin la commande psql n’est plus reconnue.
Connaissez vous un moyen pour résoudre ce genre de problème?
Autre question :
(Si j’arrive à résoudre le pb 1)
Si la commande psql est reconnue, elle exécutera mon fichier.sql. Les fichiers sql exécutés pointent eux même vers un chemin (ou sera extrait la sortie). En local je peux mettre : .\nomFichieràExtraire.csv pour les extraire à la racine, comment faire lorsque je ne suis pas en local ? Je n’ai pas l’impression que %~dp0 marche dans ce genre de fichier.
Exemple : \copy(requête) TO ‘.\ nomFichieràExtraire.csv’ WITH (format csv,…)
Ca y est, ça marche.
Je suis parti de votre commande et en bidouillant un peu grâce à la doc j'ai obtenu une commande qui fonctionne:
\COPY (select * from matricemag) TO 'D:\Users\...\f.csv' WITH (FORMAT csv, DELIMITER ';')
Encore merci pour votre aide !
Merci pour votre aide.
Mes fichiers sql contiennent des requêtes telle que:
Select * from t_transcodage;
Si je veux utiliser la commande COPY je dois la mettre dans un fichier.sql et l'appeler dans mon batch?
Voici ma commande pour le moment:
COPY { t_transcodage[ ( tfa_cod, tfa_al, code_dep_compta) ] | (Select * from t_transcodage) }
TO { "D:\Users\...\fichier.csv" STDOUT }
[ WITH ] ( [FORMAT csv, DELIMITER as ';'] )
Je ne suis pas sûr de la forme. Est-ce que je dois supprimer les "[]" et "|"?
Bonjour,
Je suis en train de créer un batch pour interroger ma BDD sur postgresql, exécuter mes fichiers .sql et exporter mes résultats vers des fichiers .csv
Ex de commande : psql -h localhost -p port -U users -d bdd <D:\Users\...\fichier.sql >> "D:\Users\fichier.csv"
Ça fonctionne très bien, sauf que mes fichiers csv ne s’organisent pas en tableau (alors que c’est le cas lorsqu’on exporte à partir de pgAmin). C’est-à-dire que toutes mes données se mettent dans la première colonne et ça devient très galère à lire.
Du coup je voulais des avis pour savoir s’il est possible d’ajouter quelque chose dans ma commande (par exemple préciser mon caractère séparateur) afin que la mise en forme se fasse. J’aimerai surtout éviter de tout reconvertir une fois les fichiers créés (mes fichiers csv sont vraiment lourds).
J’espère que vous pourrez m’aider.
C'était exactement ça
Mon fichier était en UTF-8 du coup j'ai essayé en ANSI et ça marche nickel.
Merci!
Bonjour,
Je suis sur Windows et je travaille sur ma BDD postgresql via l’invite de commande.
J'aimerais appeler des fichiers .sql pour exécuter mes requêtes.
J'ai donc par exemple copier-coller ma requête "Select * from t_transcodage_frfssf_tdp;" dans un fichier.sql puis j'exécute la commande suivante:
BDD=> \i D:/.../monFichier.sql
Ce me donne "ERROR: syntax error at or near "i»?select * from t_transcodage_frfssf_tdp; (j'ai essayé avec et sans ";" ça ne change rien)
La syntaxe de mon path semble bon puisque mon fichier est lu. Mais il ne l'exécute pas. Du coup je ne suis pas sûr de la forme du fichier.sql ou de la commande.
Si vous avez des idées/suggestions/conseils n’hésitez pas.
Pages : 1