ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
2551
2551
EMPFEHLEN
-
Hallöchen!
Ich habe im Internet eine tolle Anleitung für das Erstellen einer MySQL-DB gestützen Online Struktursuche gefunden, die ich gerne mal ausprobieren wollte.
Alle chemischen Strukturen für die Datnebank müssen in einem bestimmten Format vorliegen (s.g. *.mol Files). Mit Hilfe eines Programmes "Checkmol.exe" werden diese Strukturfiles in einen bestimmten Zahlencode konvertiert, der dann in eine MySQL Datenbank eingetragen werden soll. Checkmol wird über Command line Befehle gesteuert (Checkmol <Option> <Filename>) z.B. so Checkmol -X 00001.mol
Da man meistens eine sehr große Anzahl an chemischen Struktruren hat (> 100.000), würde das händische Konvertieren und Eintragen in die DB ewig dauern. Daher wurden in dem Beispiel Perl-Skripte benutzt. Mit perl habe ich bis jetzt noch nichts gemacht gehabt, dazu kommt, dass die Beispiele für ein Linux-System ausgelegt sind. Der Perl-Code sieht recht verständlich aus, sodass ich es zumindest schon einmal geschafft habe, das das Skript die DB-Tabellen anlegt, nur funktioniert der Befehlsdurchlauf mit den Command Line Befehlen nicht und er kann dadurch die richtigen Werte nicht eintragen.
Daher meine Frage:
Wie führt man cmd.exe aus und übergibt Behfehle?
Wie bekommt man die Ausgabe wieder in eine Variable?
Das größte Problem scheinen immer die Programmpfade zu sein, gebe ich diese jedoch ein, bekomme ich Fehlermeldungen.
Hier mal ein Auschnitt aus dem Original Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
use DBI(); $user = "moldb-admin"; $password = "topsecret"; $cmd = "#!/bin/sh cd /data/htdocs/moldb/molfiles for i in [0-9][0-9][0-9][0-9][0-9].mol do mol_id=`echo \$i |sed -e s/\.mol//g` echo -n \${mol_id}\: /usr/local/bin/checkmol -X \$i done "; open (INFILE, "$cmd |") || die ("cannot open input file!"); my $dbh = DBI->connect("DBI:mysql:database=moldb;host=localhost", $user, $password, {'RaiseError' => 1});
Link zur Anleitung: Uni Wien
Bin für jeden Hinweis dankbar!
Viele Grüße,
JackaGeändert von Jacka (21.10.06 um 13:12 Uhr)
Biologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!
- - - - - - - - - - - - - - - -
Open Source JS-Framework für Business Web-Applications: ExtJS
-
Ganz so einfach wird das nicht, weil unter Windows einige Programme (z.B. das sed) nicht vorhanden ist.
Du solltest Dir genauer anschauen was gemacht wird und dann die Funktionalität in Perl nachprogrammieren.
So wie es für mich aussieht, sollte es ungefähr so gehen:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use strict; use warnings; # Pfad muss angepasst werden my $dir = '/data/htdocs/moldb/molfiles'; # Pfad muss angepasst werden my $command = 'C:\Programme\checkmol.exe -X '; opendir DIR,$dir or die $!; my @files = grep{/\.mol$/}readdir DIR; closedir DIR; for my $file(@files){ my $return = qx{$command $file}; } # hier muss noch die Konvertierung hin...
-
Besten Dank! Es hat funktioniert!
Viele Grüße,
JackaBiologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!
- - - - - - - - - - - - - - - -
Open Source JS-Framework für Business Web-Applications: ExtJS
Ähnliche Themen
-
MFC Zugriff auf MySQL Command Line Client
Von mats_MF im Forum VisualStudio & MFCAntworten: 0Letzter Beitrag: 02.12.08, 21:55 -
Bash Command Line
Von higret im Forum Linux & UnixAntworten: 3Letzter Beitrag: 01.05.06, 23:03 -
Mit PHP Command Line Befehle ausführen
Von qsrs im Forum PHPAntworten: 2Letzter Beitrag: 11.09.05, 00:57 -
Command line Tool gesucht
Von General Töff im Forum Relationale DatenbanksystemeAntworten: 8Letzter Beitrag: 30.07.05, 12:20 -
Putty Command Line
Von margaan im Forum Linux & UnixAntworten: 2Letzter Beitrag: 28.02.04, 19:00





Zitieren
Login





