Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Script : copy d'un fichier CSV dans une base postgres - anomalie de l'utilisation de la commande pg_putcopyend
    Bonjour,

    J'ai créer un script Perl permettant d’effectuer un drop/create d'une table puis de l'alimenter
    grâce a un fichier CSV.

    J'ai l'erreur lors de la soumission de mon script :


    Voici donc la partie du code incriminé:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    	open(my $infile, $FilepathExtraction) or die "Anomalie lors de l'ouverture du fichier  $sql \n";
    	print "Ouverture du fichier ordre SQL $FilepathExtraction : Ok\n";
    	while (my $line = <$infile>) 
    	{  
         $dbh->pg_putcopydata($line) or die "Anomalie de l'alimentation de la base $line\n";
    	}
    	$dbh->pg_putcopyend();
    	$dbh->commit or die "Anomalie lors du commit pour l'alimentation de la table $table\n";
    	close($infile);
    	print "Ordre d'alimentation de la $table : Ok\n";


    Quand on regarde sur internet, ce problème viendrait du fichier d'alimentation mais j'arrive à le copier via script bat.

    Il y a t-il une subtilité a prendre en compte dans l'encodage?

    Merci pour vos réponses.

  2. #2
    Membre habitué
    Je pense qu'il faut forcer ou indiquer le mode d'ouverture du fichier en utf8.

  3. #3
    Membre régulier
    Bonjour Jean-Mi;

    J'ai trouvé la solution en codant dans les ordres SQL en forçant l'encoding WIN1252.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    	my $sql = "COPY $table (XXX,
    					     XXX)
    			   FROM STDIN with (format csv, delimiter ';', encoding 'WIN1252')";


    L'alimentation de la table est ok.

    Merci pour ton aide.