Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Merci pour votre réponse. Désolée de ne pas avoir précisé le langage, en fait comme j'ai posté ce message dans la section PL/pgSQL je pensais que ça suffisait. J'ai essayé d'utiliser le using mais j'obtiens une erreur de syntaxe. Par contre en utilisant le quote_literal, cela fonctionne parfaitement! (Pour info, je suis en version 8.4 de postgreSQL)
Un grand merci pour votre aide!
Bonjour,
J'ai créé une fonction qui automatise l'export au format csv du résultat d'une requête dont un champ est une variable (le nom d'une commune).
Le problème est que pour certaines communes j'ai une apostrophe dans le nom et de ce fait ma requête select ne fonctionne pas dans tous les cas.
Que dois je faire pour résoudre ce problème?
voici la structure de ma requête select :
select * from matable where commune = ''' || varcommune|| '''
où varcommune est la variable contenant le nom de la commune
Merci beaucoup pour votre aide.
Du coup je regarde plutôt du côté d'Excel avec l'import de données externe ça fonctionne, il ne me reste plus qu'à rédiger la bonne macro pour automatiser tout ça (j'ai beaucoup de fichiers)
Merci encore pour votre aide
Lorsque j'exécute uniquement ma requête select et que je fais fichier/exporter, je peux choisir un type de codage et lorsque je sélectionne 'Jeu de caractère local', le résultat conserve bien mes caractères spéciaux (ce qui n'est pas le cas lorsque je sélectionne Unicode UTF-8).
Pour lire les fichiers csv créés, j'utilise Excel 2003.
Il n'y a aucun moyen de changer l'encodage?
Merci
Ma base de données est en UTF8 et j'utilise la version 8.4 de PostgreSQL
Je pense que j'ai aussi un problème de cote, je ne doit pas les placer au bon endroit...
Voici la function que je souhaite mettre en place. Elle fonctionne correctement sans le encoding :
create or replace function export_hydrant () returns void as
$body$
declare
id_carto text;
commune text;
ciecommune text;
begin
for id_carto in execute 'select distinct id_carto from sig_commune ' --récupère l'id_carto de toutes les communes de la table sig_commune
loop
for commune in execute 'select distinct commune_simple from sig_commune where id_carto = ' || id_carto --récupère le nom de la commune pour l'id_carto trouvé
loop
for ciecommune in execute 'select distinct compagnie||commune_simple from sig_commune where id_carto = ' || id_carto -- récupère, pour cet id_carto, la concaténation du champ compagnie avec le champ commune simple, cela permettra de donné un nom au fichier csv)
loop
raise log '%', id_carto;
execute 'copy (select id_carto,sous_type,annee_dernier_controle,observation,debit_max_en_m3h,commune,complement_adresse,num_hydrant,pression_statique,num_voie,type_voie,excipient_voie,libelle_voie,num_tournee,debit_1bar,pression_dynamique_60m3h,num_ordre_tournee,domaine,num_folio,NULL as capacite_txt from sig_hydrant_pression where commune = ''' || commune || '''
union all
select id_carto,sous_type,annee_dernier_controle,observation, NULL as debit_max_en_m3h,commune,complement_adresse,num_hydrant,NULL as pression_statique,num_voie,type_voie,excipient_voie,libelle_voie,num_tournee,NULL as debit_1bar,NULL as pression_dynamique_60m3h,num_ordre_tournee,domaine,num_folio,capacite_txt from sig_hydrant_aspiration where commune = ''' || commune || ''')' -- requête qui permet de récupérer tous les hydrants d'une commune
|| ' to ''/ExportPostgre/' || ciecommune ||'.csv'' ' -- crée un fichier csv pour chaque commune
|| 'with csv header DELIMITER '' '' '; -- le séparateur entre les colonne est une tabulation
end loop;
end loop;
end loop;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE;
Merci encore
Bonjour,
Je débute avec PostgreSQL...
Je souhaite réaliser un export en csv de deux tables. J'utilise pour cela la commande COPY. Jusque la tout va bien.
Le problème est que lorsque j'ouvre le csv créé j'ai un problème d'accent et de caractères spéciaux... Je ne sais pas comment faire pour modifier l'encodage (je pense que cela vient de la).
J'ai cru comprendre qu'il fallait ajouter l'option encoding dans la commande copy (with csv header encoding ''LATIN2'') mais j'obtiens systématiquement une erreur de syntaxe . De plus je ne sais pas quel encodage choisir pour que cela fonctionne...
Je vous remercie par avance pour votre aide
Pages : 1