Vous n'êtes pas identifié(e).
Pages : 1
La question est plutôt de savoir comment vous initialisez Chemin. Poster un code complet nous permettra plus facilement de vous aider.
Desole j'ai pense que Chemin := 'C:\test' que j'avais mis en premier message suffisait.
Finalement je suis parvenu a mes fins de cette maniere : Chemin := 'C:\\test' -- \ de base double
ainsi
Resultat VARCHAR;
Resultat := replace(Chemin,'\\','\\\\');
me donne le resultat que j' attends... C' est donc le chemin que l'on me donne qui doit etre formate pour etre compatible avec mon code.
J' utilise la version PostGreSQL 8.3
En imaginant avoir une variable Chemin := 'C:\test'
Comment peut on y remplacer toute occurence du caractere '\' (BACKSLASH) par '\\'
En faisant (en pl/pgsql):
Resultat VARCHAR;
Resultat := replace(Chemin,'\\','\\\\');
Il semble que les BACKSLASH presents dans Chemin soient interpretes avant meme d' effectuer le remplacement de chaines
c'est a dire que le remplacement essaye de se faire sur 'C:<caractere TAB>est'
Finalement j'ai trouve un moyen qui permette de definir un chemin de fichier plus souple en passant par la definition d'une requete passee a un EXECUTE :
Voici le code qui fonctionne ci-dessous (mon repertoire C:\test etant tojours accessible en lecture et ecriture)
CREATE OR REPLACE FUNCTION essais() RETURNS VOID as $$
DECLARE
filename VARCHAR := 'C:\\\\test\\\\PR10.txt'; -- notez que mes \ d'origine sont doubles une fois de plus
query_ VARCHAR;
BEGIN
DROP TABLE IF EXISTS Table_essais;
CREATE TABLE Table_essais (report_line VARCHAR);
-- Lecture d'un fichier dans la table Table_essais
COPY Table_essais FROM 'C:\\test\\PR09.txt';
-- Ecriture du contenu de Table_essais dans le fichier 'C:\\test\\PR10.txt'
--COPY Table_essais TO 'C:\\test\\PR10.txt';
query_:='COPY Table_essais TO \''||filename||'\''; -- /!\ utilisation de simple ' uniquement et pas de "
EXECUTE query_;
END;
$$ language plpgsql;
Desole pour le derangement, et j'espere que cela pourra eviter a quelqu'un de "galerer" dessus comme je l'ai fait
Bonjour,
Je developpe en PL/PgSQL et dans la fonction suivante :
CREATE OR REPLACE FUNCTION essais() RETURNS VOID as $$
DECLARE
filename VARCHAR := 'C:\\test\\PR10.txt';
BEGIN
DROP TABLE IF EXISTS Table_essais;
CREATE TABLE Table_essais (report_line VARCHAR);
-- Lecture d'un fichier dans la table Table_essais
COPY Table_essais FROM 'C:\\test\\PR09.txt';
-- Ecriture du contenu de Table_essais dans le fichier 'C:\\test\\PR10.txt'
--COPY Table_essais TO 'C:\\test\\PR10.txt';
COPY Table_essais TO filename;
END;
$$ language plpgsql;
Je ne comprend pas pourquoi la syntaxe suivante fonctionne
COPY Table_essais TO 'C:\\test\\PR10.txt'
et la syntaxe suivante me retourne une erreur :
COPY Table_essais TO filename;
l' erreure retournee est LIGNE 1 : COPY Table_essais TO $1
Cela veut il dire qu'on est oblige d'ecrire 'en dure' dans le code le chemin du fichier ?
Pages : 1