Jacka
Erfahrenes Mitglied
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:
Link zur Anleitung: Uni Wien
Bin für jeden Hinweis dankbar!
Viele Grüße,
Jacka
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:
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,
Jacka
Zuletzt bearbeitet: