Suchen nach Dateien, schreiben in mysqlDB

H

heckmic

Mitglied
Hallo,

mir stellt sich folgendes Problem:

Ich habe Dateien (*.vdr) in einem bestimmten Ordner /.../tv/
Die Pfade zu den Dateien würde ich gerne in eine Datenbank schreiben, sodass ich diese in einer Weboberfläche verwenden kann.
Ich möchte eine GUI bauen, die es vereinfacht die Filme in DVD, HALF-DVD, VCD, SVCD zu konvertieren. Der anwender soll außerdem einen Zeitpunkt für die Konvertierung der Files eingeben können.

Also: Wie kann ich die Pfade zu den Files in eine DB schreiben (am liebsten PHP) UND wie kann ich Systembefehle über PHP ausführen?
 
Hört sich nach einer Auftragsprogrammierung an, wo darf ich die Rechnung hinschicken ?:D

Ich würde es mal so starten:
Code:
 find /pathtovdr -name "*.vdr" -print | 
  perl -e 'while(<>) { 
         chop; 
         print "insert into FilenameTable values (\047$_\047);\n"; 
   }' |
  mysql -p databasename

Leerzeichen oder Sonderzeichen im Pfad/Dateiname lasse ich mal als Hausaufgabe.

Heiko
 
Ne, das bekomme ich grade noch so hin. Mir fällt das jetzt nur mit dem Dateizugriff schwehr. Ich weiß trozdem jetzt nicht so recht, wie ich das nun in die DB bekomme...

Ausgabe sieht schonmal so aus:

/mnt/ftp/tv/Jackass#3A_The_Movie/2006-09-09.23.37.99.99.rec/001.vdr
/mnt/ftp/tv/Jackass#3A_The_Movie/2006-09-09.23.37.99.99.rec/002.vdr

Die Datenbank heißt vdr, die Tabelle recs und die Spalten recid,pfad

Das Script:

find /mnt/ftp/tv -name "0*.vdr" -print |
perl -e 'while(<>) {
chop;
print "insert into recs values (\047$_\047);\n";
}' |
mysql -p --user=******** --password=******** vdr



Das ist die Fehlermeldung: ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
 
Zuletzt bearbeitet:
Hm, das ist klar, woher soll ich aus wissen, wie Deine Datenbanktabelle ausschaut ...

Du mußt jetzt das kleine Perl-Skript so erweitern, das der SQL-Code, der da rauskommt mit der Datenbank verträglich ist. Vermutlich ist die "recid" eine "primary key / auto_increment" - Spalte, dann kann man "null" einfügen. Dann müßte folgendes schon klappen:

Code:
find /mnt/ftp/tv -name "0*.vdr" -print |
perl -e 'while(<>) {
chop;
print "insert into recs values (null, \047$_\047);\n";
}' |
mysql -p --user=******** --password=******** vdr

Heiko
 
Hallo
Im Grunde geht das mit Perl direkt, was sicher schneller ist.
Code:
use DBI;
use strict;
use File::Find;
my $data = "dbi:mysql:database=db_name";
my $user = "user";
my $pass = "geheim";
my $db = DBI->connect($data, $user, $pass)
   or die "Verbindung zur Datenbank fehlgeschlagen: " . $DBI::errstr;
....

Gruß Wolfgang
 
Ok, jetzt ergibt sich für mich noch die Frage, warum auf der Konsole nur einfache phpscripte (ohne SQL) aufrufen kann (echo "test"; klappt). Ein mqsqlpconnect aber nicht

@Wolfgang: Wie würdest du das jetzt weitermachen? Ich meine die "..." also den Inhalt in de db schreiben?

Wie bekomme ich es hin, das er nur das, was dazugekommen ist reinschreibt? und das was nicht mehr da ist rauswirft?
 
Zuletzt bearbeitet:
Sorry, aber ich steige da nicht hinter! Ich habe noch niemals Perl Programmiert. Kann mir nicht jemand erklären wie das in php geht und warum sich meine phpscripte auf der Konsole nicht richtig ausführen lassen im Browser schon? Nur SQL anweisugen laufen auf der Konsole auf den Hammer.
 
Zurück
Oben