Moin Moin!
Wenn ich die Single Quotes folgendermaßen escape, funktioniert es:
... values (''$1'' ...
Wie gesagt, die sauberere Variante wäre, DBI mit Platzhaltern zu benutzen. Dein Mechanismus fällt ÜBELST auf die Schnauze, sobald $1 Single Quotes und ggf. Backslashes enthält.
Ansatz (ungeprüft):
#!/usr/bin/perl -w
# Aufruf: script.pl < daten.txt
use strict;
use DBI;
my $dbh=DBI->connect('dbi:Pg:DATENBANK','USER','PASSWORD',{ RaiseError => 1 });
### 1 ###
my $sth=$dbh->prepare('insert into FOOBAR (FOO,BAR,BAZ) values (?,?,?)'); #
while (<>) {
chomp;
/^(\w+)\t(w+)\t(w+)$/ or next; # ANPASSEN!
$sth->execute($1,$2,$3);
}
$sth->finish();
$dbh->disconnect();
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".