Schrift
[thread]3600[/thread]

pro datensatz ein txt-file ausgeben ;(: ausgaben sollen in je eine txt



<< >> 2 Einträge, 1 Seite
Gast Gast
 2005-08-18 05:47
#33427 #33427
hallo perl-gurus,

irgentwie blick ich nicht mehr durch.
vielleicht liegts auch an der urzeit.
ich leg mal gleich los,also:
ich frage den inhalt der Spalte "MainContend" (sind ca. 1200 Wörter,also TEXT)der Tablle "kat1" für 29 Datensätze ab.
mein perl-script soll pro datensatz ein text-file schreiben.
Und die txt-files mit "1" beginnend abspeichern und dann einfach hochzählen.
Theoretischer weise müsste ich in meinem ordener 29 txt-files mit dem jeweiligen inhalt haben.
was mein scipt momentan macht, ist eine datei,nämlich "1.txt" mit dem inhalt des ersten datensatzes in den ordener klatschen!
super,fehlen nur noch die restlichen 28!!! ;(
weiss einer was ich falsch mache?
LG Anna


--------------script----------------
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use DBI; 
$db = "kat1";
$host = "localhost";
$user = "root";
$password = "";


my $dbh = DBI->connect("DBI:mysql:database=$db:host=$host",$user,$password)
or die "can not connect $DBI::errstr\n";


#--------sql-abfrage------------------

$sql = "Select MainContent from kat1 where id<30";
my $sth = $dbh->prepare($sql);
$sth->execute();



$anz=1;
$file="$anz.txt";
#my @files = (<*.txt>);

@dbinhalt=(""); #Speicher für alle datensaetze
@datensaetz=(""); #Speicher für einen datensaetz
$content=""; #speicher für inhalt
$i=0;


while( my @dbinhalt = $sth->fetchrow_array())
{


#printf "CONTENT: @zeile\n",$zeile[0];
for(@dbinhalt)
{

open(DATEI, ">$file") || die "Kann $file nicht öffnen";
#print DATEI "$_";
print DATEI "$dbinhalt[0]";
close(DATEI) || die "Kann $file nicht schließen";
$dbinhalt++;
$anz++;
}

}

#----db_verbindung sauber beenden-------------------------
$sth->finish ();#ergebnismenge schliessen
$dbh->disconnect();#verbindung zum server schliessen
exit();


edit renee: ne Runde [code]-Tags spendiert\n\n

<!--EDIT|renee|1124350131-->
renee
 2005-08-18 11:25
#33428 #33428
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du musst auch den Filenamen innerhalb der while-Schleife bestimmen. Im Moment machst Du das nur einmal außerhalb der Schleife. Also steht in $file immer nur 1.txt Und es wird nicht der erste Datensatz sein, sondern der letzte. Mach mal:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#! /usr/bin/perl

use strict;
use warnings;
use DBI;

my $db = "kat1";
my $host = "localhost";
my $user = "root";
my $password = "";


my $dbh = DBI->connect("DBI:mysql:$db:$host",$user,$password)
or die "can not connect $DBI::errstr\n";


#--------sql-abfrage------------------

my $sql = "Select MainContent from kat1 where id<30";
my $sth = $dbh->prepare($sql);
$sth->execute();

my $anz=1;

while( my ($kat) = $sth->fetchrow_array())
{
my $file="$anz.txt";
open(DATEI, ">$file") || die "Kann $file nicht öffnen";
print DATEI $kat;
close(DATEI) || die "Kann $file nicht schließen";
$anz++;
}

#----db_verbindung sauber beenden-------------------------
$sth->finish ();#ergebnismenge schliessen
$dbh->disconnect();#verbindung zum server schliessen
exit();


Und schau Dir mal Wiki:use strict; an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 2 Einträge, 1 Seite



View all threads created 2005-08-18 05:47.