On 9/16/07, Ruprecht Helms <[EMAIL PROTECTED]> wrote:
> Hi,
>
> how can I parse a csv-file where the entries are seperated with | .
> The scripts later should put them into a mysql-database using dbi.
>
> Especially for me is interessting how to parse the content of the file
> and store them into different variables for later processing.
> A scriptexample would be nice.
snip
Okay, lets assume we have a four column file that needs to be put into
a DB. The four columns are id, name, create_date, and message.
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect(
'dbi:SQLite:dbname=test.db',
'',
'',
{
ChopBlanks => 1,
AutoCommit => 1,
RaiseError => 1,
PrintError => 0,
FetchHashKeyName => 'NAME_lc'
}
);
if ($dbh->tables('%', '%', 'testtable', "TABLE")) {
print "deleting testtable\n";
my $sth = $dbh->do("delete from testtable");
} else {
print "creating testtable\n";
my $sth = $dbh->do("
CREATE TABLE testtable (
id INT,
name CHAR(50),
create_date DATE,
message CHAR(255)
)
");
}
my $insert = $dbh->prepare(
"INSERT INTO testtable (id, name, create_date, message)
VALUES (?, ?, ?, ?)"
);
while (<DATA>) {
chomp;
$insert->execute(split /\|/);
}
my $sth = $dbh->prepare("select * from testtable where name = ?");
$sth->execute("bar");
while (my $row = $sth->fetchrow_hashref) {
print "$row->{name}: $row->{message}\n";
}
__DATA__
1|foo|2007-01-01|foo is here
2|bar|2007-01-01|bar is here
3|baz|2007-01-01|baz is here
4|bar|2007-01-02|bar has left
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/