← Back to team overview

sslug-teknik team mailing list archive

Re: mysql import af komma separeret fil

 

Kristian Nørgaard <kristian@xxxxxxxxxxxxxxxxxxx> writes:

> Hvordan får jeg det lettest importeret det til en mysql database?
> Findes der nogle "tools" eller skal jeg til at scripte mig ud af det?

Jeg har ofte scriptet mig ud af det.

Jeg plejer ofte at have nogle smådeltaljer der ville gøre det svært at
bruge et generelt værktøj. Hvis dine data er pæne og ikke indeholder
seperatortegnet er det også ret let. I stedet for at pille med at
forbinde sig til databasen genererer jeg ofte SQL INSERT's i et
perlscript jeg bare pipper ind i mysql.

Altså noget ala:

#!/usr/bin/perl

my $table = "mytable";
my %data;

while (<>) {
    my @F = split /;/;
    $field = shift @F;

    $data{$field} = \@F;
}

while (@{$date{$field}) {
    my $sql = "INSERT INTO $table SET ";
    $sql .= $_=" . shift $data{$_} . ", " for keys %data;
    substr $sql, -2, 2, ";\n";
    print $sql;
}
__END__

Det er lidt sværre fordi dine data 'vender forkert'. Ovenstående
virker også kun hvis det kun er tal. Ellers skal man lige få sat
quotes rundt om værdien.

-- 
 Peter Makholm     |     If you can't do any damage as root, are you still
 peter@xxxxxxxxxxx |                                          really root?
 http://hacking.dk |                       -- Derek Gladding about SELinux


References