Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Général » Comment remplacer automatiquement \ par \\ dans 'C:\test' » 12/01/2009 17:09:13
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.
#2 Re : Général » Comment remplacer automatiquement \ par \\ dans 'C:\test' » 09/01/2009 15:50:59
J' utilise la version PostGreSQL 8.3
#3 Général » Comment remplacer automatiquement \ par \\ dans 'C:\test' » 08/01/2009 16:53:35
- clousot
- Réponses : 6
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'
#4 Re : PL/pgSQL » PL/PgSQL ecriture dans un fichier et syntaxe » 08/01/2009 12:36:52
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
#5 PL/pgSQL » PL/PgSQL ecriture dans un fichier et syntaxe » 08/01/2009 11:39:57
- clousot
- Réponses : 1
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