Ich bin ein kompletter Neuling für Perl, mit PHP-Programmiererfahrung und ich habe dieses Perl-Skript zusammengestellt, um eine ziemlich große Datendatei ohne EOL-Zeichen zu lesen und eine SQL-Datei mit INSERT-Anweisungen zu erstellen. Mein Problem ist, dass es in der Quelldatei "spezielle Zeichen" (z. B. ein einfaches Anführungszeichen) gibt und ich aufgrund dieser Zeichen ungültige SQL-Abfragen erhalte.Schreiben einer SQL-Datei aus Perl
Meine Frage: Gibt es eine Möglichkeit, Daten vor dem Erstellen der SQL-Abfrage zu entkommen?
Hier ist der Perl-Skript:
#! /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);
Es wäre wahrscheinlich einfacher (und sicherer), direkt in die Datenbank zu schreiben und dann einen DB-Dump in eine Datei auszuführen, wenn Sie den Inhalt beibehalten möchten. – Ether