Schrift
[thread]8736[/thread]

Problem beim CSV File erstellen



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
banker
 2007-02-07 14:52
#74125 #74125
User since
2006-05-11
10 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo Leute,
ich muss ein Script bauen mit dem ein CSV File erzeugt wird. Da ich davon leider überhaupt keine Ahnung habe hoffe ich das mir hier einer Helfen kann.
Dies ist mein erstellter Code:

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
use CGI qw/:standard/;
use Oraperl;
use db_tool;
use Net::SMTP;
use MIME::Base64 qw(encode_base64);


$lda = db_connect("dwh_maint") || die "$ora_errstr\n";

print CGI::header(-attachment=>'rfc.csv',-type=>'text/csv');

sub CSV_wird_generiert {


$cursor = &ora_open($lda,"select M_AUFTRAGSNUMMER, M_LEISTUNGSART, M_PHASENDAUER, SAP_KST_SENDE, SAP_KST_EMPFANG from MAX_ABR where K_ABRECHNUNGSMONAT = '01.09.2002'")|| die "$ora_errstr\n";
open ( FILEHAND, "> ./rfc.csv") || print "error";

while (@e=&ora_fetch($cursor))
{
$e[4] =~ s/\n\r//g;
$e[4] =~ s/\n//g;
$e[4] =~ s/\r//g;
$e[8] =~ s/\n\r//g;
$e[8] =~ s/\n//g;
$e[8] =~ s/\r//g;

printf FILEHAND "$e[0];$e[1];$e[2];$e[3];$e[4];";
}

close (FILEHAND);
&ora_close($cursor);
&ora_commit($lda) || die "$ora_errstr\n";
}


Danke im vorraus
GwenDragon
 2007-02-07 15:33
#74126 #74126
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
banker
 2007-02-07 15:51
#74127 #74127
User since
2006-05-11
10 Artikel
BenutzerIn
[Homepage] [default_avatar]
hmm da ist ja wirklich leider voll kein Plan von Perl habe, weiß ich nicht was ich damit anfangen soll ist der Rest des Codesa denn soweit richtig?
renee
 2007-02-07 16:28
#74128 #74128
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Als erstes solltest Du immer Wiki:[tt]use strict[/tt] verwenden. Dann kannst Du statt
Code: (dl )
1
2
3
    $e[4] =~ s/\n\r//g;
$e[4] =~ s/\n//g;
$e[4] =~ s/\r//g;


das hier schreiben:
Code: (dl )
    $e[4] =~ tr/\n\r//d;


Du solltest vielleicht auch auf CPAN:DBI umsteigen. Warum nicht OraPerl? Steht hier


Du hast im Title stehen, dass Du ein Problem beim Erstellen der Datei hast, in Deinem Post ist aber nicht zu erkennen was das Problem ist...
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/
banker
 2007-02-07 16:31
#74129 #74129
User since
2006-05-11
10 Artikel
BenutzerIn
[Homepage] [default_avatar]
Problem: Wenn ich das Script ausfüre kommt das Fenster öffnen bzw speichern unter... halt stadard Windows Meldung.

nur wenn ich dann auf öffnen gehe ist das File leer, und es soll mit dem ERgebins des SQL&´s gefüllt sein...

So deutlicher geworden?
renee
 2007-02-07 16:37
#74130 #74130
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wo rufst Du denn die Subroutine auf, die die CSV-Daten erstellen soll?
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/
banker
 2007-02-07 16:59
#74131 #74131
User since
2006-05-11
10 Artikel
BenutzerIn
[Homepage] [default_avatar]
es wird nur über den browser dieses Script aufgerufen, und dann soll halt das CSV File erstellt werden werden...

Sorry wenn ich mich so doof anstelle, aber ich habe da echt 0 plan von
renee
 2007-02-07 17:33
#74132 #74132
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Probier 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
#!/usr/bin/perl

use strict;
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
use Oraperl;
use db_tool;
use Net::SMTP;
use MIME::Base64 qw(encode_base64);

my $lda = db_connect("dwh_maint") || die "$ora_errstr\n";

print header(-attachment=>'rfc.csv',-type=>'text/csv');
CSV_wird_generiert();

sub CSV_wird_generiert {
my $stmt = qq~select M_AUFTRAGSNUMMER, M_LEISTUNGSART, M_PHASENDAUER,
SAP_KST_SENDE, SAP_KST_EMPFANG
from MAX_ABR
where K_ABRECHNUNGSMONAT = '01.09.2002'~;
my $cursor = &ora_open($lda,$stmt) or die "$ora_errstr\n";

while (my @row = &ora_fetch($cursor)){
$row[4] =~ tr/\n\r//d;
print join(";",@row[0..4]),"\n";
}

&ora_close($cursor);
&ora_commit($lda) or die "$ora_errstr\n";
}
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/
banker
 2007-02-07 18:15
#74133 #74133
User since
2006-05-11
10 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke das hat soweit geklappt...

nun habe ich noch das Problem, das ich eine Number Spalte in der Datenbank habe, in dem z.B.: 1,17 drinsteht, jedoch in dem CSV file als Jan 17 ausgegeben wird.

Wäre über eine Antwort nochmal sehr dankbar.

Gruß Banker
Dubu
 2007-02-07 18:26
#74134 #74134
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Bist du sicher, dass das "Jan 17" so in der CSV-Datei steht?
Oder lädst du die Datei nur in eine Tabellenkalkulation, die dann den falshcen Wert anzeigt?

(Meine Vermutung: In der DB steht eigentlich nicht "1,17" sondern "1.17", und das wird beim Textimport in Excel o.ä. in ein Datum umgewandelt.)
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-02-07 14:52.