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 :
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 :
SELECT copy_from_file('C:\test.txt');
j'obtient ce message d'erreur :
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 !
Partager