PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle aus Datenbank auslesen und als Datei abspeichern?



Berufspenner
18-10-2002, 11:06
Hi@all

Ich bräuchte eine einfache Funktion mit der ich Tabellen aus z.B. einer SQL-Datenbank auslesen kann und dann, am besten formatiert, den Textinhalt der jeweiligen Tabelle in ein Textfile abspeichern kann. Man könnte ja sowas mit php machen. Wie das geht weis ich leider nicht, da ich mich leider noch nicht mit php in Verbinndung mit z.B. MySQL auseinander gesetzt habe. Am besten wäre da ein Perlscript.

Danke in Vorraus.

Cu

tomes
18-10-2002, 22:48
waehre:

mysqldump --host=xxx --user=xxx --password=xxx datenbank-name tabellen-name > mein_dump.sql
exportiert dir die jeweilige Tabelle der Datenbank in eine *gut lesbare* File.

T;o)Mes

elrond
21-10-2002, 14:38
#!/usr/bin/perl -w
use DBI;

$dbcstring="DBI:mysql";
$dbname="hl";
$dbuser="username";
$dbpasswd="password";
$table="default";
$sql="default";
foreach(@ARGV) {
$arg=$_;
# $arg=~ s/\,//g;

if ($arg=~/db=/) {
@elm=split("=",$arg);
$dbname=$elm[1];
}
if ($arg=~/tbl=/) {
@elm=split("=",$arg);
$table=$elm[1];
}
if ($arg=~/sql=/) {
@elm=split("=",$arg);
$sql=$elm[1];
}
}

mkconnect();
if ($sql eq "default") { $sql="select * from $table";}

my $sth=$dbh->prepare($sql);
die "Prepare-Fehler: $DBI::errstr\n" if $DBI::err;

$sth->execute();
die "Execute-Fehler: $DBI::errstr\n" if $DBI::err;

while(@fields = $sth->fetchrow_array()) {
for (my $i=0 ;$i<@fields;$i++) {$fields[$i]=~ s/\;//g;$fields[$i]=~ s/\s{3,}//g;$fields[$i]=~ s/\n/ /g;}
my $bcpln= substr(join(";",@fields),0,254);

print $bcpln."\r\n";
}


$sth->finish();
mkdisconnect();
#***************Datenbankfunktionen*************** *****************
sub mkconnect {

$dbh=DBI->connect($dbcstring.":".$dbname,$dbuser,$dbpasswd);
die "Fehler $DBI::errstr\n" unless $dbh;
}
#************************************************* ******************
sub mkdisconnect {
$dbh->disconnect();
die "Fehler $DBI::errstr\n" unless $dbh;
}
#************************************************* ******************



du musst nur username und password anpassen.
aufruf:

/usr/bin/mysql2bcp db=transfer tbl=anfragetypdef>./test.exp
bzw.

/usr/bin/mysql2bcp db=transfer sql="select * from testtab">./test2.txt

ausgegeben werden die felder mittels ";" getrennt DS-Trennung wie unter win benötigt \r\n...

Berufspenner
27-10-2002, 21:01
Hi@elrond

Das sieht sehr gut aus. Muss es demnächst mal versuchen.

Cu