Einfügern sehr vieler Datensätze dauert zu lange
Ralf
- datenbank
Hi,
ich lese eine CSV Datei mit einem Perl Script aus und schreibe sie zeilenweise in eine MySQL DB. Code wie folgt:
my $dbh = DBI-> connect("DBI:mysql:database=bar","ich","passw",);
print "Error connecting to leicode: $DBI::errstr\n"
unless $dbh;
open ('myFile', "foo.dat");
while ($zeile = <myFile>)
{
#...hier werden ein paar Zeichen verändert und noch ein paar für das Problem jetzt unwichtige Dinge gemacht, nichts rechenintensives.
my $query = "INSERT INTO fooBar(...) VALUES (...)";
$dbh->do($query);
}
}
close('myFile');
$dbh->disconnect();
Ein Import mit einem anderen Programm scheidet aus, da ich jeden Datensatz noch etwas überprüfen und ggf. verändern muss.
Nun muss ich auf diese Art ca. 1,3 Mio. Datensätze einfügen, das dauert ewig. Hat jemand eine Idee, wie das schneller gehen kann?
Gruß
Ralf
Hi!
while ($zeile = <myFile>)
{
my $query = "INSERT INTO fooBar(...) VALUES (...)";
$dbh->do($query);
}
Hat jemand eine Idee, wie das schneller gehen kann?
Lo!
Hallo Ralf,
wenn Du bessere Hardware hast, kannst Du auch die Prioritäten der Festplatte(n) zum Schreiben und Lesen der I/O Kanäle anpassen.
Siehe Dir mal im MySQL 5.1 Handbuch die Seiten ab Seite 367 an.
7.2.16. Geschwindigkeit von INSERT-Anweisungen
Kay