Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
J'aimerais savoir où se trouve la rubrique Batch Windows sur le forum, je ne la trouve pas.
Cordialement
BM
Je m'excuse, mais comprenez bien que j'essaie de comprendre en parallèle.
Tout d'abord, j'ai testé de la façon suivante :
@D:\pfi\postgresql\bin\psql.exe --set param1='CDU' --set param2='C19365DA01' --set param3='text/html' -U databaseuser -d FreqNum -f "%USERPROFILE%\AppData\Local\Temp\Script_export_demodB.sql"
ERREUR :
Do you want to start the export files ? Are you sure ? [Y/n]
Saisissez l'affaire : CDU
Saisissez le partnumber : C19365DA01
Saisissez le type : text/html
psql : attention : option supplémentaire "'CDU'= " ignorée
psql : attention : option supplémentaire "--set= " ignorée
psql : attention : option supplémentaire "param2= " ignorée
psql : attention : option supplémentaire "'C19365DA01' " ignorée
psql : attention : option supplémentaire "--set " ignorée
psql : attention : option supplémentaire "param3= " ignorée
psql : attention : option supplémentaire "'text/html= " ignorée
psql : attention : option supplémentaire "-f " ignorée
psql : attention : option supplémentaire "databaseuser " ignorée
psql : attention : option supplémentaire "-d " ignorée
psql : attention : option supplémentaire "FreqNum " ignorée
psql : attention : option supplémentaire "param2= " ignorée
psql : attention : option supplémentaire "D:\Users\T0147777\AppData\Local\Temp\Script_export_demodB.sql" ignorée
Mot de passe pour le databaseuser : **********
psql (9.3.5)
Attention : l'encodage console (850) diffère de l'encodage Windows (1252).
Les caractères 8 bits peuvent ne pas fonctionner correctement.
Voir la section "Notes aux utilisateurs de windows" de la page
de référence de psql pour les détails.
Et dans l'autre cas :
@D:\pfi\postgresql\bin\psql.exe --set param1=%a% --set param2=%b% --set param3=%c% -U databaseuser -d FreqNum -f "%USERPROFILE%\AppData\Local\Temp\Script_export_demodB.sql"
ERREUR :
Do you want to start the export files ? Are you sure ? [Y/n]
Saisissez l'affaire : CDU
Saisissez le partnumber : C19365DA01
Saisissez le type : text/html
Mot de passe pour l'utilisateur databaseuser : ********
Use "CREATE EXTENSION Script_export_demodB" to load this file.
DROP FUNCTION
CREATE FUNCTION
psql: D:\Users\T0147777\AppData\Local\Temp\Script_export_demodB.sql:150: ERREUR: erreur de syntaxe sur ou près de " , "
LIGNE 1 : SELECT test_final (, , );
Appuyez sur une touchez pour continuer...
Cela veut-il dire qu'il ne fait pas la liaison entre les capture de a, b et c précédent, j'ai essayer avec des "set /P %a% = Saisissez l'affaire : " et j'ai le même le résultat.
Cordialement
BM
Pour la proposition suivante :
Script_export_demodB.bat
@echo off
:choice
set /P choix=Do you want to start the export files ? Are you sure ? [Y/n]
if /I "%choix%" EQU "Y" goto :export
goto :end
:export
set /P a = Saisissez l'affaire <!-- paramètre1-->
set /P b = Saisissez le partnumber <!-- paramètre2-->
set /P c = Saisissez le type <!-- paramètre3-->
psql --set param1=%a% --set param2=%b% --set param3=%c% -f "%USERPROFILE%\AppData\Local\Temp\Script_export_demodB.sql"
@D:\pfi\postgresql\bin\psql.exe -U databaseuser -d FreqNum -f "%USERPROFILE%\AppData\Local\Temp\Script_export_demodB.sql"
:end
pause
exit
J'ai l'erreur suivante dans la console du .bat
Do you want to start the export files ? Are you sure ? [Y/n]
Saisissez l'affaire : CDU
Saisissez le partnumber : C19365DA01
Saisissez le type : text/html
'psql' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
Appuyez sur une touchez pour continuer...
Est ce bien dans le .bat que je dois rentrer cette commande ?
Cordialement
BM
Bonjour,
Je m'excuse par avance, mais je ne sais pas si cette discussion rentre bien dans la bonne section du forum.
Je suis débutant en batch et je me heurte à un soucie. Je souhaite que l'utilisateur de mon .bat rentre des paramètres via son clavier qui seront utilisé en entrée de ma fonction dans le .sql. Je vous mets les parties importantes :
Script_export_demodB.bat
@echo off
:choice
set /P choix=Do you want to start the export files ? Are you sure ? [Y/n]
if /I "%choix%" EQU "Y" goto :export
goto :end
:export
set /P a = Saisissez l'affaire <!-- paramètre1-->
set /P b = Saisissez le partnumber <!-- paramètre2-->
set /P c = Saisissez le type <!-- paramètre3-->
@D:\pfi\postgresql\bin\psql.exe -U databaseuser -d FreqNum -f "%USERPROFILE%\AppData\Local\Temp\Script_export_demodB.sql"
:end
pause
exit
Script_export_demodB.sql
CREATE OR REPLACE FUNCTION test_final (choix_affaire character varyung, choix_partnumber character varying, choix_type character varying) RETURNS varchar AS $BODY$
...
LANGUAGE plpgsql VOLATILE
COST 100;
SELECT test_final ('CDU', 'C1935DA01', 'text/html');
Je souhaite remplacer 'CDU', 'C1935DA01', 'text/html' par les trois paramètres du .bat (a, b et c).
Serait-il possible de m'aider?
Merci d'avance
Cordialement
BM
Bonjour,
J'ai trouvé la solution. Je la met quand même, si jamais d'autre personne se pose la même question :
CREATE OR REPLACE FUNCTION public.exercice() RETURNS character varying AS $BODY$
DECLARE
a real ;
b real;
c varchar ;
BEGIN
a := (SELECT min(id) FROM table) ;
b := (SELECT min(id) FROM table) ;
FOR i IN a..b LOOP
PERFORM * FROM table WHERE id = a;
IF FOUND THEN
c:=(SELECT directory FROM table WHERE id=a);
EXECUTE FORMAT ('COPY (SELECT name FROM table WHERE id = %L) TO ''D:/' || c ||'''', a) ;
END IF;
a:=a+1;
END LOOP;
RETURN c ;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100 ;
Cordialement
BM
Bonjour gleu,
J'y suis arrivé mais en modifiant un peu mon code je suis arrivé à un autre problème :
Table de test : table
id ;name;directory
7 ;test1;test1.txt
3 ;test2;test2.txt
5 ;test3;test3.txt
2 ;test4;test4.txt
4 ;test5;test5.txt
CREATE OR REPLACE FUNCTION public.exercice() RETURNS character varying AS $BODY$
DECLARE
a real ;
b real;
c varchar ;
BEGIN
a := (SELECT min(id) FROM table) ;
b := (SELECT min(id) FROM table) ;
FOR i IN a..b LOOP
c:=(SELECT directory FROM table WHERE id=a);
EXECUTE FORMAT ('COPY (SELECT name FROM table WHERE id = %L) TO ''D:/' || c ||'''', a) ;
a:=a+1;
END LOOP;
RETURN c ;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100 ;
Et j'ai l'erreur suivante :
ERREUR: l'argument de la requête est NULL
CONTEXT: fonction PL/pgsql exercice(), ligne 13 à l'instruction EXECUTE
********** Erreur **********
ERREUR: l'argument de la requête est NULL
État SQL :22004
Contexte : fonction PL/pgsql exercice (), ligne 13 à instruction EXECUTE
Il est évident qu'il bloque quand id=(a qui est égale à 6), donc ma question est existe t-il un IF EXISTS qui marche avec une requête dynamique, pur régler ce problème ?
Cordialement
BM
Je vais faire des recherches la dessus et je te recontacte si je bloque.
BM
Bonjour gleu,
Premièrement, je tient à dire que je me suis trompé, ce n'est pas ''D:/test.txt'' mais 'D:/test.txt' cependant mon problème reste le même.
J'ai l'erreur suivante :
ERREUR: la colonne « a» n'existe pas
LINE 1: COPY (SELECT name FROM table WHERE id = a) TO 'D:/test.txt'
^
QUERY: COPY (SELECT name FROM table WHERE id = a) TO 'D:/test.txt'
CONTEXT: fonction PL/pgsql exercice(), ligne 7 à instruction SQL
********** Erreur **********
ERREUR: la colonne « a» n'existe pas
État SQL :42703
Contexte : fonction PL/pgsql exercice (), ligne 7 à instruction SQL
BM
Bonjour,
J’ai un problème de compréhension pour détecter une égalité entre une colonne et une variable dans une requête de COPY TO dans un script en langage plpgsql. Pour faire des tests, j’ai fait un petit script :
Table de test : table
id ;name
7 ;test1
3 ;test2
5 ;test3
2 ;test4
4 ;test5
CREATE OR REPLACE FUNCTION public.exercice() RETURNS character varying AS $BODY$
DECLARE
a real ;
b varchar ;
BEGIN
a := (SELECT min(id) FROM table) ;
COPY (SELECT name FROM table WHERE id = a) TO ''D:/test.txt'' ;
b := (SELECT name FROM table WHERE id = a) ;
RETURN b ;
END ;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100 ;
Le but est de copier le name de l’id le plus faible en prenant en compte que l’on ne le connait pas, c’est pour cela que nous passons par une variable.
Cela est-il possible et pouvez-vous m’aiguiller sur ce sujet?
Cordialement
BM
Pages : 1