Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 08/01/2009 11:39:57
- clousot
- Membre
PL/PgSQL ecriture dans un fichier et syntaxe
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 ?
Hors ligne
#2 08/01/2009 12:36:52
- clousot
- Membre
Re : PL/PgSQL ecriture dans un fichier et syntaxe
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
Hors ligne
Pages : 1