PMG2SQL: MovieGuides in einer MySQL-Datenbank

DBoxZeit, JtG Migrator etc.
Nachricht
Autor
Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

PMG2SQL: MovieGuides in einer MySQL-Datenbank

#1 Beitrag von Pedant » So 25 Sep 2005, 17:55

Hallo,

mein erstes c#-Programm ist fertig, das wollte ich Euch nicht vorenthalten.

Zweck der Übung
Für meine privaten Zwecke habe ich eine MovieGuide-SQL-Datenbank angelegt. Jetzt kann ich aus allen Sendungen, die in den MovieGuide-Dateien gelistet sind, per Internet-Browser eine beliebige Auswahl treffen und habe somit bequemen Zugriff auf alle vorhandenen Informationen der MovieGuides. Die Datenbank ist ein reines Abfrage-Medium.
Um die MovieGuide-Daten aus den MovieGuide-Dateinen in die SQL-Datenbank zu bekommen, habe ich einen Konverter geschrieben "pmg2sql.exe". Das Programm generiert SQL-Dateien die per Drag und Drop vom Programm "MySQL-Front" verarbeitet werden können.
Falls Webserver, MySQL und PHP schon installiert und am laufen sind, dann ist die Erzeugung der Datenbank sehr einfach. Wer das noch nicht installiert hat, muss das erst mal nachholen.

Systemvoraussetzungen

Zum Konvertieren der MovieGuide-Dateien per "pmg2sql" benötigt man einen Rechner mit Windows und .Net.
MovieGuide-Dateien braucht man natürlich auch.
Zum Benutzen der Datenbank benötigt man einen Rechner mit MySQL, Webserver und PHP, was natürlich derselbe Rechner sein kann.

Mein System

Apache 2.0.50
http://httpd.apache.org/download.cgi

PHP Version 4.3.7
http://www.php.net

MySQL 4.0.20d
http://dev.mysql.com/downloads/mysql

MySQL-Front 2.5
http://www.mysqlfront.de

Es gibt jeweils aktuellere Versionen, als die, die ich nutze. Die aktuellen Versionen werden vermutlich auch funktionieren.

So sieht das Ganze dann aus

Konverter:

Bild


Auswahl-Seite: (Klick auf das Bild, dann kannst Du es testen.)

Bild


Ausgabeergebnis (Beispiel):

Bild


Detail-Ansicht (Beispiel):

Bild


Download

pmg2sql-Paket

Das Paket enthält:

pmg2sql.zip (Der Konverter)
sqlskripte.zip (SQL-Skript zum einmaligen Anlegen der nötigen Tabelle "Sender" in einer MySQL-Datenbank)
webskripte.zip (PHP und HTML-Skripte, das optionale Abfrage-Frontend)
(In der Datei "ausgabe.php" und "details.php" muss jeweils noch in Zeile 11 und 12 der Benutzername und dass Kennwort angepasst werden! Falls Dein Datenbankname anders als "movieguide" lautet, muss er in Zeile 14 angepasst werden.)

Wen's interessiert, viel Spaß damit.
Bugberichte und Fragen zum Programm und den Web-Skripten sind gerne gesehen. Ob ich Featurerequests (so es solche geben sollte) berücksichtigen werde, weiss ich noch nicht.
Nachhilfe bei der Installation von MySQL, Apache und PHP bitte bei Google suchen, das würde hier sonst den Rahmen sprengen und dort gibts schon reichlich Hilfe dazu.

Gruß Frank
Zuletzt geändert von Pedant am So 29 Jan 2006, 15:26, insgesamt 7-mal geändert.
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#2 Beitrag von Pedant » Mi 14 Dez 2005, 22:16

Update:

Hallo,
die PHP und HTML-Skripte sind etwas modifiziert und um die Datei "settings.js" ergänzt.
Per Editor können in "settings.js" ein paar Voreinstellungen vorgenommen werden, um das Abfrageformular nach persönlichen Vorlieben vorzubelegen.

In "ausgabe.php und "details.php" muss BENUTZER und KENNWORT wieder angepasst werden. (Siehe roten Text im ersten Beitrag.)

Gruß Frank
Zuletzt geändert von Pedant am Di 10 Jan 2006, 13:41, insgesamt 2-mal geändert.
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#3 Beitrag von Pedant » Fr 23 Dez 2005, 19:44

Ein kleines Update:

Hallo,
die PHP und HTML-Skripte sind um eine Option ergänzt.
Die Anzahl der anzuzeigenden Treffer kann jetzt begrenzt werden.

In "ausgabe.php und "details.php" muss BENUTZER und KENNWORT wieder angepasst werden. (Siehe roten Text im ersten Beitrag.)

Gruß Frank
Zuletzt geändert von Pedant am Di 10 Jan 2006, 13:41, insgesamt 2-mal geändert.
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#4 Beitrag von Pedant » Do 29 Dez 2005, 13:49

Ein wichtiges Update:

Hallo,
die PHP und HTML-Skripte haben sich geändert.

Das Jahr 2006 und ein neuer Sender wurde eingefügt.

Ein neues Feature wurde eingeführt:
In der Abfrage-Ausgabe kann jetzt auf eine Sendung geklickt werden, wodurch dann Details zum Film angezeigt werden.

Die Datei "settings.js" darf, aber muss nicht überschrieben werden.
In "ausgabe.php und "details.php" muss BENUTZER und KENNWORT wieder angepasst werden. (Siehe roten Text im ersten Beitrag.)
Die Datei "JTG.css" wird nicht mehr benötigt und darf gelöscht werden, sie stört aber nicht.

Viel Spaß damit,
Gruß Frank
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#5 Beitrag von Pedant » So 29 Jan 2006, 16:08

Eine neue Version:

Hallo,

PMQ2SQL ist jetzt in der Version 1.2 verfügbar.
Anlass des Updates war, dass ich ältere MovieGuide Dateien erhalten habe.
Da diese vom aktuellen Format des MovieGuides abweichen, habe ich PMG2SQL entsprechend umgeschrieben, damit es auch mit den mir vorliegenden älteren Dateien kompatibel ist.
Das Update sollten alle Nutzer künftig verwenden, da es noch kleine Detailänderungen gab.

Bisher erzeugte SQL-Daten sind noch weitgehend kompatibel.
Wer also schon diverse Dateien konvertiert und in eine Datenbank eingepflegt hat, der muss diesen Vorgang nicht erneut durchführen. Um eine schon vorhandene Datenbank anzupassen sollten drei SQL-Befehle einmalig ausgeführt werde.

UPDATE sender SET genre='' WHERE genre='Unbekannt'
UPDATE sender SET ton='' WHERE ton='k.A.'
UPDATE sender SET titel='Koyaanisqatsi' WHERE titel='+Koyaanisqatsi'

Das kann entweder mit dem Programm "MySQL-Front" oder vergleichbarem erfolgen oder aber auch über das Auswahl-Formular meiner Webskripte und zwar im Feld:
"Hier kann direkt eine SQL-Abfrage eingegeben werden".
Hinweis:

Das Absenden der obigen SQL-Befehle per Auswahl-Formular, erzeugt zwar einige Fehlermeldungen in der darauf folgenden Ausgabe, da dies eigentlich nur für einfache Abfrage-Befehle gedacht ist, aber sie werden korrekt ausgeführt.
Die drei Befehle sind einzeln, nacheinander auszuführen, wobei die Reihenfolge egal ist.

Die PHP und HTML-Skripte erforderten auch eine Anpassung.
Geändert haben sich die Dateien auswahl.php, ausgabe.php und details.php.
Alle anderen Dateien dürfen, aber müssen nicht überschrieben werden.

In "ausgabe.php und "details.php" muss BENUTZER und KENNWORT und gegebenenfalls auch datenbank wieder angepasst werden. (Siehe roten Text im ersten Beitrag.)

Viel Spaß mit dem Update,
Gruß Frank

Die hier grün gelisteten MovieGuide-Dateien habe ich, die Roten fehlen mir noch.
PMG2SQL Ver. 1.2 ist mit all diesen grünen S-Dateien kompatibel.
Wer fehlende Dateien hat, der lasse sie mir bitte zukommen (egal ob S oder F).
(An dieser Stelle meinen Dank an diejenigen, die mir schon Dateien zukommen ließen.)

S-Dateien
mguide_d_s_mm_jj.txt - vor 11/2001
mguide_d_s_11_01.txt - 11/2001
mguide_d_s_12_01.txt - 12/2001
mguide_d_s_01_02.txt - 01/2002
mguide_d_s_02_02.txt - 02/2002
mguide_d_s_03_02.txt - 03/2002
mguide_d_s_04_02.txt - 04/2002
mguide_d_s_05_02.txt - 05/2002
mguide_d_s_06_02.txt - 06/2002
mguide_d_s_07_02.txt - 07/2002
mguide_d_s_08_02.txt - 08/2002
mguide_d_s_09_02.txt - 09/2002
mguide_d_s_10_02.txt - 10/2002
mguide_d_s_11_02.txt - 11/2002
mguide_d_s_12_02.txt - 12/2002
mguide_d_s_01_03.txt - 01/2003
mguide_d_s_02_03.txt - 02/2003
mguide_d_s_03_03.txt - 03/2003
mguide_d_s_04_03.txt - 04/2003
mguide_d_s_05_03.txt - 05/2003
mguide_d_s_06_03.txt - 06/2003
mguide_d_s_07_03.txt - 07/2003
mguide_d_s_08_03.txt - 08/2003
mguide_d_s_09_03.txt - 09/2003
mguide_d_s_10_03.txt - 10/2003
mguide_d_s_11_03.txt - 11/2003
mguide_d_s_12_03.txt - 12/2003
mguide_d_s_01_04.txt - 01/2004
mguide_d_s_02_04.txt - 02/2004
mguide_d_s_03_04.txt - 03/2004
mguide_d_s_04_04.txt - 04/2004
mguide_d_s_05_04.txt - 05/2004
mguide_d_s_06_04.txt - 06/2004
mguide_d_s_07_04.txt - 07/2004
mguide_d_s_08_04.txt - 08/2004
mguide_d_s_09_04.txt - 09/2004
mguide_d_s_10_04.txt - 10/2004
mguide_d_s_11_04.txt - 11/2004
mguide_d_s_12_04.txt - 12/2004
mguide_d_s_01_05.txt - 01/2005
mguide_d_s_02_05.txt - 02/2005
mguide_d_s_03_05.txt - 03/2005
mguide_d_s_04_05.txt - 04/2005
mguide_d_s_05_05.txt - 05/2005
mguide_d_s_06_05.txt - 06/2005
mguide_d_s_07_05.txt - 07/2005
mguide_d_s_08_05.txt - 08/2005
mguide_d_s_09_05.txt - 09/2005
mguide_d_s_10_05.txt - 10/2005
mguide_d_s_11_05.txt - 11/2005
mguide_d_s_12_05.txt - 12/2005
mguide_d_s_01_06.txt - 01/2006

F-Dateien
mguide_d_f_mm_jj.txt - vor 02/2000
mguide_d_f_02_00.txt - 02/2000
mguide_d_f_03_00.txt - 03/2000
mguide_d_f_04_00.txt - 04/2000
mguide_d_f_05_00.txt - 05/2000
mguide_d_f_06_00.txt - 06/2000
mguide_d_f_07_00.txt - 07/2000
mguide_d_f_08_00.txt - 08/2000
mguide_d_f_09_00.txt - 09/2000
mguide_d_f_10_00.txt - 10/2000
mguide_d_f_11_00.txt - 11/2000
mguide_d_f_12_00.txt - 12/2000
mguide_d_f_01_01.txt - 01/2001
mguide_d_f_02_01.txt - 02/2001
mguide_d_f_03_01.txt - 03/2001
mguide_d_f_04_01.txt - 04/2001
mguide_d_f_05_01.txt - 05/2001
mguide_d_f_06_01.txt - 06/2001
mguide_d_f_07_01.txt - 07/2001
mguide_d_f_08_01.txt - 08/2001
mguide_d_f_09_01.txt - 09/2001
mguide_d_f_10_01.txt - 10/2001
mguide_d_f_11_01.txt - 11/2001
mguide_d_f_12_01.txt - 12/2001
mguide_d_f_01_02.txt - 01/2002
mguide_d_f_02_02.txt - 02/2002
mguide_d_f_03_02.txt - 03/2002
mguide_d_f_04_02.txt - 04/2002
mguide_d_f_05_02.txt - 05/2002
mguide_d_f_06_02.txt - 06/2002
mguide_d_f_07_02.txt - 07/2002
mguide_d_f_08_02.txt - 08/2002
mguide_d_f_09_02.txt - 09/2002
mguide_d_f_10_02.txt - 10/2002
mguide_d_f_11_02.txt - 11/2002
mguide_d_f_12_02.txt - 12/2002
mguide_d_f_01_03.txt - 01/2003
mguide_d_f_02_03.txt - 02/2003
mguide_d_f_03_03.txt - 03/2003
mguide_d_f_04_03.txt - 04/2003
mguide_d_f_05_03.txt - 05/2003
mguide_d_f_06_03.txt - 06/2003
mguide_d_f_07_03.txt - 07/2003
mguide_d_f_08_03.txt - 08/2003
mguide_d_f_09_03.txt - 09/2003
mguide_d_f_10_03.txt - 10/2003
mguide_d_f_11_03.txt - 11/2003
mguide_d_f_12_03.txt - 12/2003
mguide_d_f_01_04.txt - 01/2004
mguide_d_f_02_04.txt - 02/2004
mguide_d_f_03_04.txt - 03/2004
mguide_d_f_04_04.txt - 04/2004
mguide_d_f_05_04.txt - 05/2004
mguide_d_f_06_04.txt - 06/2004
mguide_d_f_07_04.txt - 07/2004
mguide_d_f_08_04.txt - 08/2004
mguide_d_f_09_04.txt - 09/2004
mguide_d_f_10_04.txt - 10/2004
mguide_d_f_11_04.txt - 11/2004
mguide_d_f_12_04.txt - 12/2004
mguide_d_f_01_05.txt - 01/2005
mguide_d_f_02_05.txt - 02/2005
mguide_d_f_03_05.txt - 03/2005
mguide_d_f_04_05.txt - 04/2005
mguide_d_f_05_05.txt - 05/2005
mguide_d_f_06_05.txt - 06/2005
mguide_d_f_07_05.txt - 07/2005
mguide_d_f_08_05.txt - 08/2005
mguide_d_f_09_05.txt - 09/2005
mguide_d_f_10_05.txt - 10/2005
mguide_d_f_11_05.txt - 11/2005
mguide_d_f_12_05.txt - 12/2005
mguide_d_f_01_06.txt - 01/2006
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#6 Beitrag von Charles » So 05 Feb 2006, 14:03

Hallo Pedant,

ich habe mal meine erste Movieguide konvertiert und in MySQL einlesen wollen, leider klappt das nicht so wie ich mir das denke, was daran liegen kann, daß ich mir heute erst MySQL & Co installiert habe :oops:

von Vorne..
Installation von MySQL, aktuelle Version 5.0.18, als "essential"-Download, also nur Standard-Installation.
Installation von MySQL-Front, evenfalls aktuelle Version 3.2

Ich habe eine Datenbank & Tabelle angelegt, hierzu habe ich Dein Script benutzt. Hat geklappt, mich wundert aber, daß alle Textfelder als Memo angelegt werden - ist aber erstmal unwichtig

Ich habe dann die Movieguide mguide_d_s_01_06.txt konvertiert, heraus kam die Datei mguide_d_s_02_06.sql.

Diese SQL-Datei wolle ich einlesen, aber kein Datensatz wird angenommen weil die ID nicht gefüllt ist eine Beispiel-Zeile:

Code: Alles auswählen

INSERT INTO sender VALUES("", "", "", "PREMIERE 1", "01", "02", "2006", "06:25", "Muxmäuschenstill", "", "Drama", "01:31", "D", "2004", "Marcus Mittermeier", "16:9", "Dolby Surround", "Jan Henrik Stahlberg, Fritz Roth, Wanda Perdelwitz, Dieter Dost, Holger Gronemann, Rainer Adler, Sandor Söth", "Student Mux (Jan Henrik Stahlberg) hat eine Mission: Er will rigoros für den Erhalt von Recht und Ordnung sorgen. Also zieht er mit seiner Videokamera los und dokumentiert Verstöße der kleinen Leute, vom falschen Parken bis zum Pinkeln ins Schwimmbecken. Bis er selbst auf die schiefe Bahn gerät. - Bitterböse Satire über einen schrägen Wertewächter. Das freche Filmdebüt wurde prompt für den Deutschen Filmpreis nominiert.");
Diese Zeile habe ich manuell geändert, und die entsprechenden Felder gefüllt:

Code: Alles auswählen

INSERT INTO sender VALUES("1", "0", "0", "PREMIERE 1", "01", "02", "2006", "06:25", "Muxmäuschenstill", "", "Drama", "01:31", "D", "2004", "Marcus Mittermeier", "16:9", "Dolby Surround", "Jan Henrik Stahlberg, Fritz Roth, Wanda Perdelwitz, Dieter Dost, Holger Gronemann, Rainer Adler, Sandor Söth", "Student Mux (Jan Henrik Stahlberg) hat eine Mission: Er will rigoros für den Erhalt von Recht und Ordnung sorgen. Also zieht er mit seiner Videokamera los und dokumentiert Verstöße der kleinen Leute, vom falschen Parken bis zum Pinkeln ins Schwimmbecken. Bis er selbst auf die schiefe Bahn gerät. - Bitterböse Satire über einen schrägen Wertewächter. Das freche Filmdebüt wurde prompt für den Deutschen Filmpreis nominiert.");
Dann funktioniert das Anlegen der Daten...

Hast Du bei Dir eine automatische Nummerierung/Vorbelegung in der Datenbank hinterlegt, aber wie liest Du die Daten ein?

Oder anders ausgedrückt:
Hast Du eine Vorbelegung der Felder id, markierung & aufgenommen vom PMG2SQL überhaupt vorgesehen?

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#7 Beitrag von Pedant » So 05 Feb 2006, 15:28

Hallo Charles,

um Deine Fragen zu beantworten musste ich mir erstmal MySQL-Front 3.2 installieren. Dabei musste ich feststellen, dass es kein Freeware-Tool mehr ist. Mal nach Alternativen Ausschau halten.
... alle Textfelder als Memo angelegt werden
Das ist per default so. Wenn Du aber in der Tabelle "sender" im Daten-Browser auf so ein <MEMO> klickst, dann wird der eigentliche Feldinhalt im Reiter "Text" angezeigt.
Das kannst Du auch ändern (Haken setzen):
Einstellungen -> Allgemeine Einstellungen -> Daten Darstellung -> Daten in Tabelle: (x) Memo Felder
Hast Du eine Vorbelegung der Felder id, markierung & aufgenommen vom PMG2SQL überhaupt vorgesehen?
"id" sollte eine fortlaufende, eineindeutige Nummerierung sein, die beim Einlesen der Daten automatisch erstellt wird. "markierung" und "aufgenommen" sind hingegen nicht vorbelegt und bleiben zunächst leer.

Markier mal links in der Baum-Struktur die Tabelle Sender. Im Objekt-Browser sollte dann Folgendes stehen:

Name: Primärindex
Tpy: id
NULL:
Default:
Extras: unique

Name: id
Tpy: bigint(10)unsigned
NULL: Nein
Default:
Extras: auto_increment

...


In der Baum-Struktur links einen Rechtsklick auf die Tabelle Sender und dann im Kontextmenü "Eigenschaften" wählen, bringt Dich zu "Tabelle bearbeiten". Im Reiter "Allgemein" steht der Wert für "Auto Increment". Er sollte mit jedem importieren Datensatz automatisch um eins erhöht werden. Vor dem Import des ersten Datensatzes sollte dort eine 1 stehen.

Tabelle anlegen:
In der Baumstruktur links mit rechter Maustaste auf die Datenbank -> Import -> SQL Datei... -> "create_table_sender.sql" auswählen -> [Fertig stellen] -> warten -> [Schließen]

Daten einlesen:
In der Baumstruktur links mit rechter Maustaste auf die Datenbank -> Import -> SQL Datei... -> "mguide_d_s_xx_xx.sql" auswählen -> [Fertig stellen] -> warten -> [Schließen]

Warum bei Dir eine Vorbelegung der "id" notwendig ist, kann ich Dir nicht sagen. Eventuell muss ich mein MySQL updaten, um auch das Problem zu haben. Es bedarf aber einer Lösung, da das Importieren der SQL-Dateien sonst eigentlich nicht möglich ist.

Gruß Frank
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#8 Beitrag von Charles » So 05 Feb 2006, 16:33

Markier mal links in der Baum-Struktur die Tabelle Sender. Im Objekt-Browser sollte dann Folgendes stehen:

Name: Primärindex
Tpy: id
NULL:
Default:
Extras: unique

Name: id
Tpy: bigint(10)unsigned
NULL: Nein
Default:
Extras: auto_increment
So steht es auch bei mir in der Datenbank
Tabelle anlegen:
In der Baumstruktur links mit rechter Maustaste auf die Datenbank -> Import -> SQL Datei... -> "create_table_sender.sql" auswählen -> [Fertig stellen] -> warten -> [Schließen]
Fehlerfrei eingelesen
Daten einlesen:
In der Baumstruktur links mit rechter Maustaste auf die Datenbank -> Import -> SQL Datei... -> "mguide_d_s_xx_xx.sql" auswählen -> [Fertig stellen] -> warten -> [Schließen]
Das habe ich ausgeführt, und im Anschluss kommt die Fehlermeldung
SQL Ausführungsfehler 1264. Antwort der Datenbank:
Out of range value adjusted for column 'id' at row 1


Ich habe mal ein wenig rumprobiert.
Ich kann die Daten einlesen inc. auto. ID, wenn ich das Feld id mit 0 oder NULL übergebe. Desweitern müssen die Felder markierung und aufgenommen ebenfalls mit dem Wert NULL gespeichert werden. Folgende Zeilen werden bei mir problemlos eingelesen:

Code: Alles auswählen

INSERT INTO sender VALUES(NULL, NULL, NULL, "MGM", "01", "02", "2006", "07:10", "Kanonen für Cordoba", "", "Western", "01:39", "USA", "1969", "Paul Wendkos", "4:3", "Mono/Zweikanalton", "Raf Vallone, Giovanna Ralli, George Peppard, John Russell, Don Gordon, John Larch, Nico Minardos", "Das Gebiet zwischen Texas und Mexiko, 1912: Dem mexikanischen Banditen Cordoba (Raf Vallone) ist es gelungen, sechs Kanonen zu erbeuten, die für den amerikanischen General Pershing (John Russell) bestimmt waren. Captain Douglas (George Peppard) erhält den Befehl, die Kanonen zu zerstören und Cordoba zu fangen. - Straff inszenierter Edelwestern, der auch heute noch überzeugt.");
INSERT INTO sender VALUES(NULL, NULL, NULL, "PREMIERE 4", "01", "02", "2006", "07:15", "Lautlos", "", "Actionfilm", "01:31", "D", "2002", "Mennan Yapo", "16:9", "Dolby Surround", "Joachim Król, Nadja Uhl, Christian Berkel, Rudolf Martin, Lisa Martinek, Peter Fitz, Mehmet Kurtulus", "Das Spezialgebiet von Auftragskiller Viktor (Joachim Król) ist das Töten von Menschen, die von der Polizei observiert werden. Lautlos erledigt er seine Jobs. Als er zufällig Nina (Nadja Uhl) vor dem Selbstmord rettet, wird der Killer plötzlich verwundbar: Denn seine Gefühle vertragen sich nicht mit seinem Beruf. - Hervorragend gespielter und stilvoll gedrehter Hochspannungs-Thriller aus Deutschland.");
Die beiden Felder markierung und aufgenommen bleiben dann auf dem Wert NULL, id wird automatisch hochaddiert.

Ehrlich gesagt verstehe ich gar nicht, wieso Deine Datenbank "" als vorbelegung eines numerischen Feldes (bigint) akzeptiert.
Die beiden anderen Felder sind vom Typ enum - der mir noch nichts sagt, da muss ich mich noch schlau machen. Da in der Anlage der Tabelle diese Felder mit dieser Definition angegeben werden:
markierung enum("x"),
aufgenommen enum("rec"),

gehe ich einfach mal davon aus, daß NUR diese Inhalte "x" bzw. "rec" erlaubt sind und zusätzlich NULL. Also dürfte "" ebenfalls gar nicht zulässig sein.
:?

Bitte verstehe meine Anmerkungen nicht als Kritik, ich denke nur einfach "laut". Eventuell funktionieren ja alle Imports bei Dir ebenso reibungslos, wenn Du anstelle der "" die Angabe NULL speicherst...

Dass MySQL-Front kostenpflichig ist habe ich auch gesehen, da ich blutiger MySQL-Anfänger bin, wollte ich aber nicht gleich auf die Suche nach einem alternativen Frontend gehen... :wink:

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#9 Beitrag von Pedant » Mo 06 Feb 2006, 2:42

Ein kleines Update:

Hallo,

PMQ2SQL ist jetzt in der Version 1.3 verfügbar.
Anlass des Updates war, Charles "Problem" mit dem MySQL-Front 3.2.
Geändert hat sich nur pmg2sql.exe und hilfe.txt.
In der Änderung ist enthalten, dass in der ini die Vorgabe-Werte für id, markierung und aufgenommen nach belieben gesetzt werden können.
Default ist jetzt jeweils "NULL", vorher war es "".
Die alte pmg2sql.ini wird von alleine aktualisiert, sie muss nicht gelöscht werden.

@charles,
... gehe ich einfach mal davon aus, daß NUR diese Inhalte "x" bzw. "rec" erlaubt sind und zusätzlich NULL. Also dürfte "" ebenfalls gar nicht zulässig sein.
Das ist korrekt, wobei "" bei mir keine Schwierigkeiten macht.
Bitte verstehe meine Anmerkungen nicht als Kritik, ich denke nur einfach "laut". Eventuell funktionieren ja alle Imports bei Dir ebenso reibungslos, wenn Du anstelle der "" die Angabe NULL speicherst...
Ich habe es mit "NULL" statt "" ausprobiert und es macht keinen erkennbaren Unterschied.
Die Abfrage select markierung from sender where markierung = "NULL" ergibt keine Treffer.
Die Abfrage select markierung from sender where markierung = "" ergibt alle Datensätze als Treffer.
Völlig egal, ob ich mit "NULL" oder "" importiert hatte.

Kritik? Quatsch! Ich bin froh, dass sich überhaupt mal jemand dazu äußert.
Feedback ist das A und O beim Programmieren.
da ich blutiger MySQL-Anfänger bin, wollte ich aber nicht gleich auf die Suche nach einem alternativen Frontend gehen...
Dafür sind ja jetzt auch noch 29 Tage Zeit. Ich melde mich sobald ich was entdeckt habe.
MySQL-Front ist vermutlich sein Geld wert, es ist ein klasse Tool, aber für diesen Zweck (einmal monatlich ein SQL-Skript ausführen) doch nicht wert dafür zu bezahlen.

Gruß Frank
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#10 Beitrag von Charles » Mo 06 Feb 2006, 12:25

Danke Pedant, werde ich heute abend ausprobieren!

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#11 Beitrag von Charles » Mo 06 Feb 2006, 22:22

Hallo Pedant,

leider klappt das nicht so richtig :o
INSERT INTO sender VALUES("NULL", "NULL", "NULL", "13TH STREET", ...
Das wird nun so erzeugt. Wie Du sehen kannst ist das reservierte Wort NULL nun als Text gespeichert und somit leider nicht sinnvoll nutzbar. Da hast Du wohl eine allgemeine Routine, die immer quotet... :D

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#12 Beitrag von Pedant » Di 07 Feb 2006, 14:13

Ein Bug-Fix:

Hallo,

PMQ2SQL ist jetzt in der Version 1.4 verfügbar.
Geändert hat sich die pmg2sql.exe und die hilfe.txt.

NULL-Werte für "id", "markierung" oder "aufgenommen" werden in der erzeugten SQL-Datei nicht mehr in Anführungszeichen gesetzt, es sei denn man setzt sie in der ini-Datei schon in Anführungszeichen.
Der Default-Wert für alle drei ist NULL und bewirkt jetzt als Ausgabe:
INSERT INTO sender VALUES(NULL, NULL, NULL, ...

@Charles,

der Unterschied war mir nicht bewusst.
Mit SQL habe ich zwar meine ersten Erfahrungen "schon" vor zehn Jahren gemacht, mich aber nie intensiv damit beschäftigt, bin also immer noch ein Anfänger. Ich musste daher erstmal nachlesen, was NULL eigentlich bedeutet und bewirkt.

Ist ein Feld mit NULL belegt, dann ist es "weniger" als leer.
select id, markierung from sender where markierung = "";
erzielt keine Treffer.

select id, markierung from sender where markierung = "NULL";
erzielt auch keine Treffer.

Die Abfragen für NULL müssen so formuliert werden:
select id, markierung from sender where markierung is null;
oder die Umkehrung:
select id, markierung from sender where markierung is not null;

Gruß Frank
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#13 Beitrag von Charles » Di 07 Feb 2006, 18:01

Huiii,

da muss ich mich entschuldigen. Ich habe gedacht und auch so verstanden, daß Du schon in Vers. 1.3 das so speichern wolltest und nur einen Bug beim Schreiben der Datei hattest. Da liest sich mein obiger Kommentar dann in dem Zusammenhang einwenig hämisch. Sorry. :oops:

Zu den Feldern:
Wie Du schon schreibst ist NULL ein wirklich leeres Feld. Kein Zeichen ist in dem Feld gespeichert, die Feldlänge ist 0 Byte. Wenn Du ein Leerzeichen speicherst, sieht das zwar optisch gleich aus, aber die Feldlänge ist dann 1 Byte. NULL wir in vielen Programmiersprachen auch verwendet, um den Zustand eines Feldes/Speicherbereiches zu prüfen, was dann auf "noch nicht verwendet" angewendet wird.

Die beiden anderen Felder sind ja mit Fixwerten in der Datenbank angelegt. "markierung" darf nur den Feldinhalt "x" haben, deshalb kann man als Vorbelegung nur den NULL-Wert einlesen, oder eben "x" direkt speichern, was ja wenig Sinn macht. Genauso verhält es sich bei "aufgenommen" was nur mit dem Wert "rec" gefüllt werden darf. Für mich persönlich stellt sich in dem Zusammenhang die Frage, warum Du die Felder überhaupt so anlegst. Ich würde Tabellen mit diesen Funktionen entweder numerisch definieren oder als Boolean. In beiden Fällen kann man den Zustand des Feldes einfacher füllen oder abfragen
0 oder false = nicht zutreffend
1 oder true = zutreffend
Das ist aber Geschmacksache und auch völlig egal. Ich bin halt ein alter Cobol-Programmierer und habe so meine Gewohnheiten beim Programmieren. Besser oder schlechter ist keines von beiden, bei anderen Programmiersprachen fällt es halt leichter in einer Maske das Feld "markierung" dann direkt mir einer Checkbox zu verbinden. Denn beide Felder sind dann vom gleichen Typ.

Ich hoffe durch meine Anregungen/Änderungswünsche musst Du nun nicht Deine eigentliche Applikation umschreiben, weil nun die Abfragen anders gestellt werden müssen. Das war nicht meine Absicht. Ich will auch "nur" eine Datenbank mit allen Filmen aufbauen, um diese dann weiter zu verarbeiten. Die drei ersten Felder benötige ich hierzu _wahrscheinlich_ gar nicht. Ich will die Filmdaten irgendwie in eine Video-Verwaltung einbauen, wo man sich den Film in einem Grid aussucht und dann in die Verwaltung übernehmen kann. So ungefähr habe ich mir das jedenfalls gedacht, also es ist weiterhin Dein Project, Deine Daten und Deine Idee. Ich will nur die Möglichkeiten Deines Tools mitnutzen.

Ich glaube ich rede einfach zu viel... :D

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Benutzeravatar
Pedant
admin-c
admin-c
Beiträge: 4285
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Bad Vilbel
Kontaktdaten:

#14 Beitrag von Pedant » Di 07 Feb 2006, 19:03

Hallo Charles,
Ich glaube ich rede einfach zu viel
Nicht zuviel aber unnötig viel. Ich bin wegen Anregungen und Fragen nicht beleidigt - warum auch?
Wozu Du das Programm nutzt, bleibt wirklich Dir überlassen. Wenn die kleinen Änderungen Deinen Bedürfnissen entgegen kommen, dann habe ich das gerne gemacht.
Mein Abfrageinterface ist von den Änderungen übrigens nicht betroffen, da ich die Felder "markierung" und "aufgenommen" zwar angelegt, aber noch nicht mit Nutzen erfüllt habe, die liegen bisher brach zur späteren Verwendung.
Jetzt rede ich auch schon zuviel, das steckt irgendwie an.
Falls Dir noch was auf- oder einfällt, melde Dich wieder.

Gruß Frank
Sagem 1xi + HDD Kabel, JtG-Team Image v2.4.6 (19.12.2015), avia600vb028, ucode int., cam_01_02_105D
Coolstream Neo, FW 2.10 (leider kaputt)
Win 10 Pro x64, i7 920, 12 GB, SSD
u-Grabber 0.2.7.6-> TS -> PX 0.91.0.08 -> IfoEdit 0.971 -> ImgBurn 2.5.0.0 -> DVD-R

Charles
Site Sponsor
Site Sponsor
Beiträge: 654
Registriert: Di 07 Okt 2003, 21:14

#15 Beitrag von Charles » Do 09 Feb 2006, 19:10

Hallo Pedant,

ich habe gestern meine DB gefüllt, soweit ist alles OK.
beim Einlesen kamen auf ältere Dateien Warnungen, die wohl durch die Konvertierung zustande kamen, weil die Daten im alten Format noch nicht so 100 % gefüllt waren - von Premiere wohlgemerkt..

Wenn Du da noch Zeit investieren willst, habe ich ein Beispiel für Dich aus der mguide_d_s_11_01.txt:
PREMIERE MOVIE 1: 03.11./08:30
American Pie
- Genre: Teeniekomödie - Länge: 01:31
USA 1999. Mit Jason Biggs, Shannon Elizabeth, Alyson Hannigan, Chris Klein.
Der 17-jährige Jim (Jason Biggs) und seine drei Kumpels von der Highschool wollen endlich ihre männliche Unschuld verlieren. Sie schließen einen Pakt: Bis zum Abschlussball muss jeder mit einem Mädchen geschlafen haben. Doch das ist leichter gesagt als getan. - Flotte Teeniekomödie.
in dem Beispiel ist der Regiseur nicht angegeben, normalerweise wird das ja mit "Von " angeben. Dieser Fehler ist in mehreren alten Daten aus 2001/2002 enthalten

Nach der Konvertierung ist dann das Feld Regie mit den Darstellern gefüllt:
PREMIERE MOVIE 1: 03.11./08:30
Titel: American Pie
Episode: - Genre: Teeniekomödie - Länge: 01:31 Stunden
Produktionsland: USA - Produktionsjahr: 1999 - Regie: Mit Jason Biggs, Shannon Elizabeth, Alyson Hannigan, Chris Klein
Bild- und Tonformate: k.A./k.A.
Darsteller:
Der 17-jährige Jim (Jason Biggs) und seine drei Kumpels von der Highschool wollen endlich ihre männliche Unschuld verlieren. Sie schließen einen Pakt: Bis zum Abschlussball muss jeder mit einem Mädchen geschlafen haben. Doch das ist leichter gesagt als getan. - Flotte Teeniekomödie.
Etwas aussergewöhnlich ist noch das Erscheinungs-Jahr bei den "Krieg der Sterne" Episoden 4-6:
USA 1977/1996
USA 1979/1996
USA 1983/1996
Der Inhalt "1977/1996" ist dann zu lang für das Datenbankfeld (Def. YEAR). Ob man das "unterstützen" muss, bezweifle ich eigentlich. Wenn, dann muss das Datenbankfeld Alphanumerisch definiert werden.

Es gab auch noch Filme ohne Erscheinungsjahr, oder viele Regie-Angaben, etc. Aber da kannst Du ja nichts daran ändern, die Felder sind halt nicht gefüllt nach dem Import...

Das sind alles Sachen, die man ignorieren kann. Meine Daten habe ich teilweise angepasst oder gelassen, jedenfalls ist die DB gefüllt. Vielleicht willst Du aber für künfige Konvertierungen die fehlende Angabe des "Von ..." berücksichtigen...

So far so good

Den SQL-Front 2.5 habe ich zum Download gefunden, leider funktioniert der aber nicht mit der aktuellen MySQL 5.0 -- ich teste nun mit der MySQL 4.0 herum, und versuche dann damit mein Glück. Mal schauen welche Tools und Delphi-Komponenten welche MySQL-Version benötigen, bei der 4.0 bin ich aber auf der sicheren Seite was die Unterstützung angeht.

Grüße
Charles
[dBox2 Philips - JtG-Image] [JackTheGrabber 0.74c] [udrec 0.12q]
[ProjectX 0.82.1.02] [Cuttermaran 1.66] [Muxxi V1.10.047] [DVDlabPro 1.55]

Antworten