Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]774[/thread]

SQL Tabellen mit Perl erstellen



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
con
 2006-07-10 22:20
#8290 #8290
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich hab hier ein Skript was tabellen in eine .txt schreibt die man dann in mysql impotieren kann!

Mein Problem hier ist das das Skript leider nur Dateien in die .txt schreibt die anfangs nummeriert sind.

Jetzt bekomme ich es einfach nicht hin das es Dateien einträgt die nicht mit einer nummer anfangen sondern alphabetisch geordnet sind!

hier mal das skript:

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
#!/usr/bin/perl
open(titeltxt,"<titel.txt");
@titel=<titeltxt>;
close(titeltxt);
open(urltxt,"<urls.txt");
@urls=<urltxt>;
close(urltxt);
open (sql,">sql.txt");
$anzahl=@titel;
$zahl=0;
for($i=0;$i<$anzahl;$i++){
if((length($titel[$i]) > 2)&&(length($urls[$i])>2)){
$zahl=substr($titel[$i],0,4);
if ($zahl<=2500){$subkat=5;}
if ($zahl<=2000){$subkat=4;}
if ($zahl<=1500){$subkat=3;}
if ($zahl<=1000){$subkat=2;}
if ($zahl<=500){$subkat=1;}
$zahl=$zahl+1-1;
if($zahl ne ($altezahl+1)){print ($altezahl+1)." fehlt \n";}
$altezahl=$zahl;
$romname=$titel[$i];
while($romname=~/\n/g){chop($romname);}
$romurl=$urls[$i];
while($romurl=~/\n/g){chop($romurl);}
$romname=~s/'/\\'/g;
$romurl=~s/'/\\'/g;
$romscreen="http://www.deineurl.de/bilder/".$zahl."b.jpg";
print sql "INSERT INTO `files`(`kat_id`,`sub_kat_id`,`filename`,`downloadfile`,`screen`) VALUES (1, $subkat, '$romname', '$romurl', '$romscreen');\n"
}
}


und hier ein auszug aus der sql.txt

INSERT INTO `files`(`kat_id`,`filename`,`downloadfile`,`screen`) VALUES (5, 'dateiname', 'http://www.deineurl.de/ziel.rar', 'http://www.deineurl.de/bilder/0001b.jpg');

bisher hab ich mit dem skript alle dateien in die datenbank eingetragen die folgendermaßen aussahen

0001 - filename.rar
0002 - filename.rar
usw.

jetzt wollte ich das das skript auch die dateien einträgt die keine nummer am anfang haben

also dateien von a-z die alphabetisch geordnet sind in entsprechenden .txt dateien

diese sehen dann in etwa so aus

alpha.rar
beta.rar

also einfach ohne die nummer am anfang!

das sollte man doch mit perl hinbekommen oder? also das das skript die einzelnen dateien erkennt und die entsprechende url zum download zur richtigen datei zuweist bzw. ordnet (in der sql.txt die ich dann in die datenbank impotiere)

------
INSERT INTO `files`(`kat_id`,`filename`,`downloadfile`,`screen`) VALUES (5, 'dateiname', 'http://www.deineurl.de/ziel.rar');

der dateiname/filename in der erstellten table vom skript ist mit der ziel.rar/downloadfile immer identisch.

mfg con


/modedit Gwendragon: Code-Tags hinzu\n\n

<!--EDIT|GwenDragon|1152558497-->
pktm
 2006-07-11 01:22
#8291 #8291
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Wäre es schimm, wenn die Dateien ohne Zahl am Anfang einfach eine arbiträre Zahl zugeordnet bekämen? Das wäre dann die kleine, unaufwendige (dem Script irgendwie am ehesten entsprechende) Variante.
http://www.intergastro-service.de (mein erstes CMS :) )
con
 2006-07-11 02:17
#8292 #8292
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
müsste ich hierfür die dateien ändern? weil das sind ca 25000 :/ wenn nein kein problem
renee
 2006-07-11 10:06
#8293 #8293
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
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
#!/usr/bin/perl

use strict;
use warnings;

open(titeltxt,"<titel.txt") or die $!;
my @titel=<titeltxt>;
close(titeltxt);

open(urltxt,"<urls.txt") or die $!;
my @urls=<urltxt>;
close(urltxt);

open (sql,">sql.txt") or die $!;

my $subkat = 6;

for my $i(0..scalar(@test)-1){
if((length($titel[$i]) > 2)&&(length($urls[$i])>2)){
my $zahl=substr($titel[$i],0,4);
if($zahl =~ /^\d+$/){
if ($zahl<=500){$subkat=5;}
elsif ($zahl<=1000){$subkat=4;}
elsif ($zahl<=1500){$subkat=3;}
elsif ($zahl<=2000){$subkat=2;}
elsif ($zahl<=2500){$subkat=1;}
#if($zahl ne ($altezahl+1)){print ($altezahl+1)." fehlt \n";}

my $romname=$titel[$i];
$romname =~ s/\n*?$//;
$romname=~s/'/\\'/g;

my $romurl=$urls[$i];
$romurl =~ s/\n*?$//;
$romurl=~s/'/\\'/g;

my $romscreen="http://www.deineurl.de/bilder/".$zahl."b.jpg";
print sql "INSERT INTO `files`(`kat_id`,`sub_kat_id`,`filename`,`downloadfile`,`screen`) VALUES (1, $subkat, '$romname', '$romurl', '$romscreen');\n"
}
}


Du solltest unbedingt mit Wiki:use strict; und use warnings; arbeiten!

Und eine Fehlerbehandlung ist auch nicht verkehrt...
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/
con
 2006-07-11 12:54
#8294 #8294
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
dankeschön für die info...

hab mir das mit use strict mal durchgelesen, scheint wirklich supi so sein!

btw. das skript wird aber jetzt nich mehr ausgeführt... bzw. es lädt und lädt und lädt -.-
pktm
 2006-07-11 13:02
#8295 #8295
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Gibt es eine Ausgabe?
Schreibe mal zwischen die Zeilen ab und an ein print "jetzt der Schritt xyz"; um festzustellen, ab wann das script so lange braucht.

Wächst die Datei?
http://www.intergastro-service.de (mein erstes CMS :) )
con
 2006-07-11 13:34
#8296 #8296
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
ok habs mit dem print so gemacht aber er zeigt nix an... also er lädt kein byte von dem skript, habs auf 2 versch. servern versucht aber nix :/

http://www.romstuff.de/cgi-bin/makesql.pl

hier zum selber schaun...

in die sql.txt schreibt er auch nix
renee
 2006-07-11 15:03
#8297 #8297
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Da sind mir ein paar Fehler auf die Schnelle unterlaufen (deswegen hab' ich ja in der Signatur stehen, dass alles ungetestet ist).

Das hier ist syntaktisch richtig:
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
#!/usr/bin/perl

use strict;
use warnings;

open(my $fh_titel,"<titel.txt") or die $!;
my @titel=<$fh_titel>;
close($fh_titel);

open(my $fh_url,"<urls.txt") or die $!;
my @urls=<$fh_url>;
close($fh_url);

open (my $fh_sql,">sql.txt") or die $!;

my $subkat = 6;

for my $i(0..scalar(@titel)-1){
if((length($titel[$i]) > 2)&&(length($urls[$i])>2)){
my $zahl=substr($titel[$i],0,4);
if($zahl =~ /^\d+$/){
if ($zahl<=500){$subkat=5;}
elsif ($zahl<=1000){$subkat=4;}
elsif ($zahl<=1500){$subkat=3;}
elsif ($zahl<=2000){$subkat=2;}
elsif ($zahl<=2500){$subkat=1;}
#if($zahl ne ($altezahl+1)){print ($altezahl+1)." fehlt \n";}

my $romname=$titel[$i];
$romname =~ s/\n*?$//;
$romname=~s/'/\\'/g;

my $romurl=$urls[$i];
$romurl =~ s/\n*?$//;
$romurl=~s/'/\\'/g;

my $romscreen="http://www.deineurl.de/bilder/".$zahl."b.jpg";
print $fh_sql "INSERT INTO `files`(`kat_id`,`sub_kat_id`,`filename`,`downloadfile`,`screen`) VALUES (1, $subkat, '$romname', '$romurl', '$romscreen');\n"
}
}
}

close $fh_sql or die $!;
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/
con
 2006-07-11 17:13
#8298 #8298
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
anscheinend hat der erste server derzeit probleme

hab das skript jetzt mal auf server 2 gehaun und da zeigt es mir einen error 500 an, das ja soweit nicht schlimm. den hab ich damals auch bekommen als ich die sql.txt mit den dateien die mit zahlen anfangen erstellt habe!

aber diesmal ist noch nichts geschehen :/

http://www.free-romz.de/cgi-bin/makesql.pl
http://www.free-romz.de/cgi-bin/titel.txt
http://www.free-romz.de/cgi-bin/urls.txt


woran könnte das ganze liegen?! auf jeden fall schon mal ein großes danke für eure mühen bisher!

edit: die .txt werden auch nich angezeigt, hier könnt ihr euch sie anschauen

http://www.free-romz.de/titel.txt
http://www.free-romz.de/urls.txt\n\n

<!--EDIT|con|1152623884-->
con
 2006-07-15 00:44
#8299 #8299
User since
2006-07-10
10 Artikel
BenutzerIn
[default_avatar]
weiss denn keiner mehr weiter?
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2006-07-10 22:20.