fehlender Konverter

Begonnen von Nobbs, 06 November 2002, 14:03:36

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Nobbs

Ich würde ja sehr gerne zum eBoard wechseln, auf allen neuen Seiten, die ich einrichte, nutze ich es auch, aber bei unserer "alten" Seite haben wir ein recht volles Ikonboard, das will ich nicht aufgeben. (edit: aufgeben will ich es schon, aber den Inhalt nicht)

Kann mir jemand einen Konverter anbieten bzw. sagen, wie ich die Daten von meinem Ikonboard ins eBoard übertragen bekomme?
Ich würde so gerne von dem ollen cgi-Teil weg!

[Editiert am 6/11/2002 von Nobbs]

tequila

Oha, ich sehe, in der Ecke Scripte zur Konvertierung ist noch sehr viel zu tun.

Mensch Nobbs, nun hast Du auch noch nicht mal eine SQL-Datenbank, die man beackern könnte (wenn ich jetzt mal den Begriff CGI-Forum richtig einschätze. Kenne das Ding nicht) sondern muß sich mit Files rumplagen.

Wie das geht?
Nun denn, die Files müssen eingelesen werden, dann nach den entsprechenden Textpassagen geparsed werden (wo steht die Überschrift und wie ist diese gekennzeichnet, wo steht der Text und wann hört er auf .....) was u.U. nicht ganz so einfach ist.
Und die gefundenen Dinger (Überschrift, Author, Text, Antworten ...) müssen dann in die entsprechenden Tabellen vom eBoard in die richtigen Spalten eingefügt werden  :o

Für PHP zu PHP hätte ich ja irgendwie noch etwas altes als "Muster" anbieten können, jedoch habe ich für CGI-Foren nix hier rumzuliegen.

Ich halte aber mal die Augen offen, habe z.Zt. leider überhaupt keine Zeit mich selbst um solche Code-Aktionen zu kümmern .... sorry  :(

Wenn ich was finde laß ich es Dich wissen ... eventuell kennt ja irgend jemand ein ähnliches Script (oder sogar dieses Forum) das er Dir empfehlen kann ... mal abwarten.

Nobbs

Tja, ich habe wirklich noch diese alten Files...  :(

Aber als ich das Ding vor 2 Jahren installiert habe, da unterstützte es angeblich schon MySQL. Ich habe eben versucht es auf meinem localhost zu installieren. Leider scheint es schon bei der Installation Probleme zu geben, d.h. MySQL akzeptiert das Ikonboard nicht. Warum erzähle ich das?  ;) Nun, ich habe mir die Files mal angeschaut und dadurch daß es angeblich MySQL unterstützt, sind die ganzen Files recht übersichtlich. Es gibt einen Ordner namens "Database" in dem liegt alles schön sauber in Unterordnern drin. In denen sind dann einzelne *.db-Dateien. Ein Zähler *.cnt.db und ein File mit den Daten, das entsprechende *.db. Leider habe ich nicht mit einem Editor den Inhalt der *.db Dateien sehen können. Aber hier mal die Struktur als Bild:

 

Was mir auch aufgefallen ist, die *.db sind alle 12kB groß!

Mir würde es auch nichts ausmachen, wenn ich 2-3x konvertieren muß. z.B. von meinem Ikonboard zu YABB oder zu phpBB und dann zum eBoard. Aber Hauptsache, ich komme von dem ollen CGI weg  :exclam:

tequila

*gröhl* ... "Reise nach Jerusalem" *prust* ;)

Ist keine dumme Idee, hat nur ein bischen was von Microschrott, oder findest Du nicht?  :D

Nein, Spaß bei Seite. Wenn es einen Konverter für dieses komische Forum gibt um den Inhalt in eine SQL zu bringen, dann wird dieser Konverter gleich so umgebaut, das der den Inhalt in das eBoard bringt.

Alles andere bringt keinen Sinn. Nur: wo gibt es so ein Script?
Hast Du mal bei dem Programmierer von dem Forum nachgefragt ob er ein Script anbietet, um sein eigenes Forum von CGI in eine SQL zu bringen? Das wäre immerhin schonmal der größte und häßlichste Teil.
Die Datenbankkonvertierung sollte sich dann als verhältnismäßig unkompliziert darstellen.

Nobbs

Ich habe heute morgen noch weiter rumprobiert. Habe sämtliche Module, die Perl für Datenbankverbindungen zu bieten hat, installiert, bekomme es aber trotzdem nicht installiert.

Eine Datei zum Erstellen der Tabellenstruktur ist mit dabei bei dem Forum, aber so bekommt man leider ja die Daten nicht in die Tabelle... Ich schaue nochmal genau auf der Webseite und im Forum bei denen.

BestenDank erstmal bis hierhin  :)

Nobbs

Zwischenstand 1:
Es gibt keinen Konverter für Files2sql  :(

Zwischenstand 2:
Es gibt aber eine Exportfunktion der Daten. Ich habe nun die Daten in einzelnen *.txt Dateien. Dazu habe ich mal das Shema in mySQL installiert und siehe da, die Tabellen passen mit den Daten zusammen. Nun sind die Daten allerdings nicht direkt so, daß ich die ienfach mit phpmyadmin importieren kann. Die sehen z.B. so aus:
  -|*|18|^|1|^|1|^|1|^|1|^|1|^|1|^|1|^|1|^|1|^|1|^|1|^|0|^|0|^|0|^|1|^||^|1|^|0|^|0|^|Server-Admins|^|1|^|0|^|0|^|0|^|1|^|0|^|0|^|0|^||^|

|*| bezeichnet wohl den Zeilenbeginn und |^| trennt die einzelnen Zellen voneinander. Ansonsten passen die Inhalte wie Faust aufs Auge in die entsprechende mysql-Tabelle, sprich18 ist die ID,...,Server-Admins ist der TITLE, etc.

Bringt dich das schon weiter?  :puzz

tequila

Oh Gott, ja, weiter schon .....

Jetzt muß eben nur noch ein Parse-File her, das eben diese Informationen aus den Dateien ausließt und folgendes tut:

1. Den Inhalt des eingelesenen Strings (als alles, was in dem File steht, z.B. mit $fileinhalt = fopen("pfad/zum/File", "r");) zuerst in Brocken zerlegen und zwar nach jedem *. Somit erhält man dann ein Array, wo jedes Element eine einzelne Zeile enthält (z.B. $zeilen = explode("*", $fileinhalt);)

2. Jetzt muß man einfach "die Länge" des Arrays bestimmen lassen (mit $howmany = count($zeilen);). Somit erhält man eine Zahl (z.B. 255 Einträge im Array)

3. Jetzt muß man mit einer Schleife diese z.B. 255 einträge einzeln nochmal zerstückeln mit explode, diesmal eben bei dem ^-Zeichen.
Jetzt hat man also die einzelnen Felder in einem neuen Array, getrennt nach den Spalten.

for($i=0;$i<=$howmany-1;$i++)
{
$inhalt$i= explode("^",  str_replace("|", $zeilen[$i])); (Somit werden dann Arrays für jede Zeile mit den einzelnen Feldern erstellt und die Striche entfernt)
}


4.
Jetzt den Inhalt des Arrays in die SQL vom eBoard einfügen. Da mußt Du dann aber bitteschön differenzieren, was denn dort eigentlich Das Thema und was die Antworten sind!
Und welches Feld des Arrays steht für was und muß in welches Feld des eBaords?

Hier also nur Musterhaft ein Beispiel-Insert für Beiträge (threads):

mysql_query("INSERT INTO nuke_eBoard_threads VALUES ('$inhalt$i[0]', '$inhalt$i[5]', ..... usw, '')");

Das $i ist die Zählvariable, die angibt, wie viele Arrays mit Thread-Inhalten vorhanden sind. Wie Du das dann countest mußt Du überlegen. Ausführen kannst Du das dann auch wieder mit einer Schleife o.ä.

Den ganzen Kram mußt Du dann natürlich auch für die Beiträge machen (nuke_eBoard_posts).

HOffe, das hilft Dir etwas weiter, denn mehr kann ich aus Zeitgründen für Dich z.Zt. leider nicht tun.

Viel Erfolg

[Editiert am 7/11/2002 von SiteAdmin Tequila]

Nobbs

Wow! Ist ja schon ne ganze Menge... Mal schauen, ob ich es hinbekomme... Melde mich dann in 7 Wochen nochmal, wenn ich es dann doch von Hand übertragen habe!  ;)

Nein, ernsthaft. Ich schau mal, ob ich so ein Skript verwirklichen kann.

Ein Problem besteht dann danach aber immer noch und ich brauche einen Vorschlag, wie ich es am elegantesten lösen kann:
Die im Board registrierten User sind evtl. (bzw. mit Sicherheit) schon in PHP-Nuke registriert. Wie bekomme ich die abgeglichen? (Die einheitliche Benutzerregistrierung bei Nuke und eBoard ist ein weiterer ausschlaggebender Grund FÜR das eBoard)

So, nun bin ich aber auch eine Weile ruhig, ich habe zu pfriemeln  :D

tequila

Hi Nobbs,

also, die User gleicht das eBoard mit dem Nuke-System automatisch ab, da mußt Du gar nichts zu tun, d.h. auch wenn die eBoard-Members-Tabelle leer sein sollte, so wird dann automatisch jeder User, der das Forum besucht, in die Members-Tabelle vom eBoard übernommen.

Bekommst Du es hin die Member Deines alten Forums in das eBoard zu übertragen und die Usernamen auf dem "neuen" Nuke-System sind identisch mit den "alten" Forumsnamen, dann ist das auch kein Problem, läuft alles automatisch.

Ansonsten befindet sich in der aktuellen Download-Version des eBoards jetzt auch ein Ordner "servicefiles". Dort drinnen befindet sich auch ein Script, mit dem Du vorhandene forums-Beiträge einem anderen Member zuweisen kannst (also z.B. aus Nobbs vom alten Forum wird SiteAdmin Nobbs für das neue Forum).
Editiere den "olduser" und "newuser"-Namen ggf. nach Deinen Vorstellungen.

Aufgerufen wird das file dann über "modules.php?name=eBoard&file=/servicefiles/olduser2newuser.php".

Nobbs

Es fehlt ein Smilie. Ich brauche ein Herz oder etwas anderes, daß meine Dankbarkeit ausdrückt!  :redhead:
Dann nehme ich mal diesen:  :kiss  :kiss

Super, genau so etwas habe ich gesucht!
Ich bin auch schon etwas weiter gekommen, dank eines guten Editors, der auch dateiübergreifendes Ersetzen ermöglicht, habe ich alle txts soweit zu
INSERT INTO xyz_abc VALUES (' ', ' ', ... , ' '); gemacht, so daß ich die Daten in die mySQL-Tabelle überführen kann. Allerdings sind bei 3 Dateien noch die ID-Zuweisungen seltsam, so daß ich da noch nachfragen muß, wie sich die TOPIC_ID etc. zusammensetzt. Die ist nämlich irgendwie zerpflückt... Und dort antworten die nicht so schnell wie du hier!

Ist wirklich angenehm hier was zu posten  :thumbup:  :thumbup:

Nobbs

oh weh oh weh!
Ich habe sehr lange versucht, bin auch wirklich meiner Meinung nach gut voran gekommen, aber nun habe ich folgendes Problem:

Die Daten für die Tabelle eboard_threads kommen aus 2 verschiedenen Tabellen vom alten Board. Einmal aus posts und aus topics. Nun ist posts aber viel kleiner, d.h. ich kann die Views (stehen in postst) nicht einfach übernehmen (bei views wäre es mir ehrlich gesagt auch egal, aber dasselbe ist bei subject und anderen)

So bekomme ich die Daten nicht in die eine Tabelle.
Ich bin schlicht am Verzeifeln.

btw: Ich mache es mittlerweile mit Excel, da kann man die Tabellenspalten schön verschieben, so daß ich hinterher eine Importdatei für MySQL abspeichern kann. Aber soweit muss ich erstmal kommen.

Hat jemand einen Tipp für mich?

Nobbs

Oh weh oh weh!
[metapher]Ich komme immer ein Schrittchen weiter, um dann die Schuhe neu binden zu müssen und langsam befürchte ich, daß die Senkel bald reissen[/metapher]

Mann mann mann! Nun habe ich viel viel Zeit damit verbracht und die ganzen Inhalte für nuke_eboard_threads aus den Dateien rausseziert. Wird auch alles 1a übernommen. Das Excelsheet in Access importieren und von dort als CVS (das Excel-CVS-Format ist Müll!) exprotieren. Dann mit einem Editor mit Suchen/Ersetzen sämtliche alten Forum-Fragmente für die Icons, Quotes, etc. an eBoard angepasst, die bei der Konvertierung verloren gegangenen Sonderzeichen aus dem {-Format ins Normal-Zeichen Format geändert. Zusätzlich alle html-Schnipsel eBoard-tauglich gemacht.
Insgesamt wären es 368 Datenreihen. Aber nun mein Problem:
MySQL importiert immer nur maximal 106 Zeilen!! Die sind zwar korrekt und problemlos, aber jede weitere Zeile ignoriert er. Wenn ich nun versuche eine bereits importierte Zeile erneut zu importieren, weigert sich phpMyAdmin ebenfalls. Es scheint, als ob die Tabelle bei 106 nichts mehr aufnehmen kann.

Ich will jetzt so kurz vor dem Ziel nicht scheitern! Weiß jemand, woran das liegen könnte? Es ist KEIN Format-Problem, da ich eine bereits importierte Zeile nicht erneut importieren kann.

Ach ja, die Fehlermeldung:
  Eingefügte Zeilen: 0
 
SQL-Befehl : [Ändern]
LOAD DATA LOCAL INFILE '/tmp/phpUYy7HG' INTO TABLE `nuke_eBoard_threads` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n'  

Nobbs

ich sehe gerade, daß das gar keine fehlermeldung ist, sondern dass die meldung immer erscheint. der einzige unterschied zu einem missglückten versuch ist die zahl der eingefügten zeilen, die ist dann nämlich leider 0  :cry

tequila

Hm, wie genau bekommst Du die Daten in die SQL?
Hast Du ein File das Du per phpMyAdmin und "SQL" einfügst bzw. kopierst Du den SQL-Code per Copy&Past in das Eingabefeld? Und dann nimmt er immer nur 106 Zeilen?

PHP hat eine Timeout-Funktion beim Zugriff auf die MySQL, wenn zu viel Daten übertragen werden dann ist Essig (nach relativ genau 30 Sekunden, daran kannst Du auch nicht so einfach etwas schrauben).

Hast Du denn schonmal versucht Deine Quelldatei in einzelne Teile, sagen wir a 90-100 Zeilen zu zerstückeln und diese dann nacheinander einzufügen? Das sollte dann eigentlich gehen wenn es an dem Timeout von PHP liegt.

Eventuell hab ich Dich jetzt auch völlig falsch verstanden  :o

Nobbs

also ein timeout kann es nicht sein.

ich habe:
 
  • die komplette *.cvs versucht hochzuladen. von 368 zeilen hat er 106 genommen
  • die *.cvs in 100er Stücke zerlegt. die tabelle nahm 105 Zeilen insgesamt
  • die eine Zeile versucht, nachdem er "voll" war. Er nahm sie nicht.
  • die tabelle geleert und willkürlich Zeilen eingefügt. die nahm er problemlos

Das Problem tauchte also wirklich erst ab einer bestimmten GESAMTdatenmenge auf. Egal ob ich die einzeln oder zusammen hochgeladen habe.

Meine Vorgehensweise:
Ansicht der nuke_eboard_threads - dort den Link "Einfügen von Textdateien" - die *.cvs ausgewählt - er arbeitet - er schafft nur knapp über 100 Zeilen. Das Format der CVS ist folgender Maßen:

"1";4;"Clandatenbank bei cstrike.de";"1003818505|Korporal Nobbs";7;0;"Korporal Nobbs";"Wer sich als Mitglied in der Clandatenbank bei cstrike.de eintragen möchte, muss diesen Link benutzen: \n\nHier gehts zur Clandatenbank bei cstrike.de\n\nDort könnt ihr euch dann auch wieder austragen, wenn ihr nicht mehr drin stehen wollt.";"1003818505";;"yes";;;"217.80.128.229";;"no";

Es ist also genau so wie die Tabelle es verlangt. Es MUSS richtig sein, sonst würde er gar nicht erst anfangen, Daten zu importieren.

tequila

Überleg Dir, wie vie Vertrauen Du zu mir hast .... wenn mehr als "gar nicht", dann schick mir so ein CVS-File (oder sagen wir mal: DAS CVS-File) mit allem, was sonst noch nötig ist an mailto:tequila@maax-design.de

Ich könnte sonst hier noch Jahre sprekulieren, will das mal selbst sehen.