PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 14/11/2012 19:38:01

butin-matou
Membre

Utiliser un backslash dans une fonction PL/PGSQL

Bonjour,
Comme d'autres avant moi, j'essaie d'ajouter une date au nom de fichier en sortie d'une commande COPY TO ...
J'ai compris qu'il faut passer par une fonction PL/PGSQL...
Ça marche, mais je voudrai que mon fichier soit exporté avec les options
      with csv header     
      NULL AS ''   et
      DELIMITER AS E'\t'  '    ;

Et là, tout marche bien aussi sauf que je n'arrive pas à maîtrise le syntaxe pour le DELIMITER AS E'\t' .
problème de backslash.

Quand je spécifie  DELIMITER AS ''|'', tout fonctionne OK.

Voici une exemple qui fonctionne bien.

set standard_conforming_strings=on;
CREATE OR REPLACE FUNCTION copy_table_to_file(filename TEXT) RETURNS VOID AS
$$
  BEGIN
    EXECUTE 'COPY ma_table TO ''' || filename || '''  with csv header     NULL AS ''''   DELIMITER AS ''|''  '    ;
  END;
$$
LANGUAGE 'plpgsql';

select copy_table_to_file('/home/csvstuff/ma_table_export_' || CURRENT_date::TEXT || '.txt');

A l'aide  SVP pour le bon syntaxe.
Merci,
Butin

Hors ligne

#2 14/11/2012 20:23:58

rjuju
Administrateur

Re : Utiliser un backslash dans une fonction PL/PGSQL

Bonjour,

cela devrait fonctionner, si vous doublez les ':

EXECUTE 'COPY bench TO ''' || filename || ''' with csv header null as '''' DELIMITER AS E''\t''';

Hors ligne

#3 15/11/2012 10:32:46

butin-matou
Membre

Re : Utiliser un backslash dans une fonction PL/PGSQL

Parfait !

Merci,
Butin

Hors ligne

Pied de page des forums