Schrift
[thread]3461[/thread]

Log files mit DBI auf Microsoft SQL: Datenuebertragung von Linux auf Windows



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Gast Gast
 2004-06-02 07:16
#32195 #32195
Hi.
habe fogendes Problem und zwar versuche ich Log FIles von einem Linux server (Red Hat) auf eine Microsoft Sql Datenbank zu schreiben.

Habe dafuer einen Programmtext in Perl geschrieben der sieht folgendermassen aus:

#!/usr/bin/perl -w
use DBI;
$file = "/var/log/messages";
unless (open(FH, $file)){
die "error: could not '$file': $!\n;
}#if
while (defined($getline=<FH>)){

  @line=split(/ /, $getline);
for ($i=9; $i<scalar(@line);$i+=1) {
$line[8]=$line[8].' '.$line[$i];
}#for
my $dbh = DBI->connect("dbi:mSQL:T1:fabian:3306","password","fabian");
my $sth=$dbh->prepare("insert into fabian ('month1','day1','time1','ip','port','month2','day2','time2','message')
values('".$line[0]."','".$line[1]."','".$line[2]."','".$line[3]."','".$line[4]."','".$line[5]."','".$line[6]."','".$line[7]."','".$line[8]."')");
$sth->execute();
}#while
iclose (FH);


Habe das mal ausgefuehrt und bekomme Fehlermeldungen ohne Ende.
z.B.


Possible unintended interpolation of @line in string at ./syslogmsql line 5.
Bareword found where operator expected at ./syslogmsql line 13, near "my $dbh=DB
 (Might be a runaway multi-line "" string starting on line 5)
       (Do you need to predeclare my?)
Unquoted string "dbi" may clash with future reserved word at ./syslogmsql line 1
Unquoted string "fabian" may clash with future reserved word at ./syslogmsql lin
String found where operator expected at ./syslogmsql line 13, near "3306",""
       (Missing operator before ","?)
Bareword found where operator expected at ./syslogmsql line 13, near "","passwor
       (Missing operator before password?)
Unquoted string "password" may clash with future reserved word at ./syslogmsql l
String found where operator expected at ./syslogmsql line 13, near "password",""
Bareword found where operator expected at ./syslogmsql line 13, near "","fabian"
       (Missing operator before fabian?)
Unquoted string "fabian" may clash with future reserved word at ./syslogmsql lin
String found where operator expected at ./syslogmsql line 14, near "my $sth=$dbh
 (Might be a runaway multi-line "" string starting on line 13)
       (Missing semicolon on previous line?)
Bareword found where operator expected at ./syslogmsql line 14, near "my $sth=$d
       (Do you need to predeclare my?)
String found where operator expected at ./syslogmsql line 15, at end of line
       (Missing semicolon on previous line?)
syntax error at ./syslogmsql line 13, near "my $dbh=DBI->connect("dbi"
Can't find string terminator '"' anywhere before EOF at ./syslogmsql line 15.

Kann mir da aber keinen Reim draus machen wenn jemand weiss was ich da falsch gemacht habe waere ich ueber einen Tip sehr dankbar
cu
dayspring
renee
 2004-06-02 11:51
#32196 #32196
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
#!/usr/bin/perl -w
use strict; # unbedingt benutzen... jetzt aber alle variablen mit my deklarieren
use warnings;
use DBI;
my $file = "/var/log/messages";
unless (open(FH, "<$file")){ # hier besser angeben, das Du lesen willst...
 die "error: could not '$file': $!\n"; # hier hat das letzte " gefehlt
}#if
while (defined($getline=<FH>)){
 my @line=split(/ /, $getline,8); # durch das ,8 sparst du die for-Schleife
 my $dbh = DBI->connect("dbi:mSQL:T1:fabian:3306","password","fabian");
 my $statement = "insert into fabian (month1, day1, time1, ip, port, month2, day2, time2, message) values(".join(", ", map{"'$_'"}@lines).")";
 my $sth=$dbh->prepare($statement);# fehler im statement beseitigt
 $sth->execute();
}#while
close (FH);
\n\n

<!--EDIT|renee|1086162967-->
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/
Dubu
 2004-06-02 23:45
#32197 #32197
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Noch besser ist es,
- die Datenbank vor der Schleife zu oeffnen,
- Fehler beim Oeffnen abzufangen und
- gleich mit Platzhaltern zu arbeiten.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
...
my $dbh = DBI->connect("dbi:mSQL:T1:fabian:3306", "password", "fabian")
 or die "Kann Datenbank nicht oeffnen: " . DBI->errstr();

while (defined($getline=<FH>)) {
   my @line = split(/ /, $getline, 8);
   my $statement = 'insert into fabian (month1, day1, time1, ip, port, month2, day2, time2, message) values (?,?,?,?,?,?,?,?,?)';
   my $sth=$dbh->prepare($statement);
   $sth->execute(@lines)
     or warn "Fehler beim Schreiben in Datenbank: " . $sth->errstr();
}
$dbh->disconnect();
...
dayspring
 2004-06-03 05:10
#32198 #32198
User since
2004-06-02
5 Artikel
BenutzerIn
[default_avatar]
Hi
Danke fuer eure schnelle Antwort
Habe die Aenderungen gemacht und es sind schon weniger Meldungen geworden die einzigen sind jetzt
Global symbol "$getline" requires explicit package name at ./syslog line 8.
Global symbol "$getline" requires explicit package name at ./syslog line 9.
Global symbol "@lines" requires explicit package name at ./syslog line 11.
Execution of ./syslog aborted due to compilation errors.

Hab den Code umbenannt.
Ich weiss halt nicht was fuer einen Package name der sucht
Weiss da jemand weiter
Gruesse
dayspring
esskar
 2004-06-03 05:16
#32199 #32199
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ersetze mal

Code: (dl )
$getline=<FH>

durch
Code: (dl )
my $getline=<FH>


und

Code: (dl )
@lines

durch
Code: (dl )
@line
dayspring
 2004-06-03 05:37
#32200 #32200
User since
2004-06-02
5 Artikel
BenutzerIn
[default_avatar]
Danke
Der code ist jetzt richtig muss jetzt nur noch ein Modul nachinstallieren. Hakt noch mit der mSQL . dachte haette alles.
Gruesse
dayspring
dayspring
 2004-06-03 05:49
#32201 #32201
User since
2004-06-02
5 Artikel
BenutzerIn
[default_avatar]
Hab doch noch was. Hab jetzt nach diesem Modul gesucht dachte ich koennte irgendwo ne RPM davon finden aber Fehlanzeige. Der Rechner sagte mir

install_driver(mSQL) failed: Can't locate DBD/mSQL.pm in @INC (@INC contains: /u sr/lib/perl5/5.6.1/i386-linux /usr/lib/perl5/5.6.1 /usr/lib/perl5/site_perl/5.6. 1/i386-linux /usr/lib/perl5/site_perl/5.6.1 /usr/lib/perl5/site_perl/5.6.0 /usr/ lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.6.1/i386-linux /usr/lib/perl5/v endor_perl/5.6.1 /usr/lib/perl5/vendor_perl .) at (eval 1) line 3, <FH> line 1.
Perhaps the DBD::mSQL perl module hasn't been fully installed,
or perhaps the capitalisation of 'mSQL' isn't right.
Available drivers: ExampleP, Pg, Proxy.
at ./syslog line 10

Erst hatte ich gedacht es wuerde mit dem DBD::ODBC klappen, das ist auch auf meinem Rechner drauf aber jetzt braucht er DBD/mSQL modul und hab keine Ahnung wo ich das finde. hab das letzte mal als ich DBI module installiert habe den Rechner so zugrunde gerichtet das sich alle Module gegensitig blockiert haben. Vielleicht weiss jemand was man da installieren sollte
Gruesse
dayspring
renee
 2004-06-03 08:55
#32202 #32202
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Auf CPAN findest Du, was Du brauchst: http://search.cpan.org/search?query=dbd%3A%3Amsql&mode=all
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/
format_c
 2004-06-03 18:16
#32203 #32203
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Oder du lässt finden:perl -MCPAN -e "install DBD::mSQL"

Gruß Alex
Strat
 2004-06-03 23:54
#32204 #32204
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
achtung: mSQL ist, wenn ich mich recht erinnere, nicht fuer MsSql verwendbar, sondern nur fuer msql und mysql...
dafuer besser DBD::ODBC verwenden... oder versuchen, ob DBD::Sybase noch immer zu MsSql kompatibel ist... aber ich fuerchte, bei zweiterem werden uebers Netzwerk ein paar libs fehlen...\n\n

<!--EDIT|Strat|1086292476-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2004-06-02 07:16.