Bonjour à tous,

Je travaille actuellement sous postgresql avec pgAdmin III et j'ai implémenté une fonction toute bête en pl/pgsql me permettant d'insérer des données en masse dans une table à partir d'un fichier. J'utilise donc "COPY table FROM file..." et je passe le chemin complet du fichier en paramètre dans la fonction.

Voici son code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE OR REPLACE FUNCTION copy_from_file(text)
  RETURNS int2 AS
$BODY$BEGIN
 COPY mot(mot,index_document) FROM $1 WITH DELIMITER AS ';';
 RETURN 1;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION copy_from_file(text) OWNER TO admin;
Le problème est que lorsque j'exécute une requête de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT copy_from_file('C:\test.txt');
j'obtient ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ERROR:  syntax error at or near "$1" at character 36
QUERY:  COPY mot(mot,index_document) FROM  $1  WITH DELIMITER AS ';'
CONTEXT:  PL/pgSQL function "copy_from_file" line 2 at SQL statement
Il semblerait que cela vienne du paramètre de la fonction. J'ai tout essayé, simple quote, double quote, etc... rien n'y fait ! Je ne vois pas comment résoudre ce problème. Merci pour votre aide !