Je suis un débutant complet à Perl, avec une expérience de codage PHP et j'ai assemblé ce script Perl pour lire un fichier de données assez volumineux sans caractères EOL et créer un fichier SQL avec des instructions INSERT. Mon problème est que dans le fichier source il y a des "caractères spéciaux" (guillemets simples, par exemple) et à cause de ces caractères je finis avec des requêtes SQL invalides.Ecrire un fichier SQL à partir de Perl
Ma question: existe-t-il un moyen d'échapper des données avant de construire la requête SQL?
Voici le script Perl:
#! /usr/bin/perl
use strict;
use warnings;
my $filename = "foo.dat";
my $buf = "";
open (MYFILE, '>data.sql');
open(my $fh, "<", $filename) or die $!;
while(read($fh, $buf, 80)) {
if (defined $buf && length $buf > 2) {
my $aa = substr $buf, 0, 2;
my $bb = substr $buf, 2, 1;
my $cc = substr $buf, 3;
print MYFILE "INSERT INTO foo (aa, bb, cc) VALUES ('".$aa."', '".$bb."', '".$cc."')\n";
}
}
close (MYFILE);
Il serait probablement plus facile (et plus sûr) d'écrire directement dans la base de données, puis d'effectuer une sauvegarde de base de données dans un fichier si vous souhaitez conserver son contenu. – Ether