News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Umzug von SMF Forum !

Started by hansy51, June 06, 2005, 02:12:59 PM

Previous topic - Next topic

hansy51

Hallo !

Ich habe ein Problem mit dem Umzug eines alten Yabbse Forums auf ein neues SMF Forum 1.0.3 !
Mein Problem ist folgendes:
Ich habe eine Neuinstallation eines Forums (ich nenne es mal ForumXXX) mit der Versionsnummer 1.0.3 und ein Forum (ich nenne es mal ForumYYY) , dass noch aus den Zeiten von Yabbse stammt ! Ich
habe es soweit, dass beide Foren XXX und YYY  auf dem Stand 1.0.3 sind. Jetzt wollte ich die Daten des alten Forums YYY  in die Datenbank des neuen Forums überspielen, habe aber dabei gemerkt, dass die Struktur des alten Forums YYY  nicht mit der Struktur der DB des neuen Forums  XXX übereinstimmt.
Ich hoffe ihr konntet mir soweit folgen !

Wie kann ich denn jetzt die Daten aus der DB des alten Forums in die neue DB bringen ?


Danke für eure Hilfe

hansy

mediman

Ist das alte Forum mit Mods versehen gewesen?
Falls ja wirst du zumindest die DB-Änderungen rückgängig machen müssen ...

Ansonstern halt das alte Forum als Grundlage nehmen und die neuen Daten mit einem Offset einspielen ...

medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

hallo,

soweit ich sehe sind keine mods installiert ! wie kommt es dann zu den änderungen im alten forum ?

Ich möchte gerne, das alte Forum YYY nicht mehr benutzen, da das neue XXX in Mambo integriert ist und dieses so schön läuft !

Schon mal Danke im vorraus !

Ich könnte ja auch alles per hand umschreiben, nur sind es beispielsweise im alten Forum so um die 130 user und die alle per hand umzuschreiben grrrrr das ist ne woche arbeit !



cya

mediman

die integration in mambo verändert meines erachtens auch die tables ...
ich würde einfach mal die id´s der user und beiträge des alten forums mit einem offset versehen (abhängig von der anzahl der member und beiträge im neuen forum) und per simplen insert in die neue db werfen ...
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

mmmmh was ist denn ein offset ?

sorry bin da nicht so fit

greetz

mediman

ui sorry, nix hochtechnisches

einfaches beispiel ...

board a hat 500 beiträge und board b 700 ...
board a soll in b integriert werden ...
dann müssen die beiträge von a neue id´s bekommen und zwar ab 700 ...
also ist der 1 beitrag von a nicht mehr 1 sondern 1+offset und offset ist 700, also 701
es gibt also für postid des forums a $id = $id+$offset; $offset=700; (mal etws idiotensicher ausgedrückt ...)

medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

danke schön !

so habe jetzt auch gemerkt, dass die Mambointegration von SMF anscheinend auch die db verändert. muss jetzt mal genau vergleichen, was sich da ändert !

werde mich dann gegebenfalls nochmal melden !

Und nochmal vielen Dank für den immer fetten Support, den man hier bekommt !

cya und greetz !

hansy51

#7
so ich nochmal !

ich habe jetzt mit forum yyy jetzt auch mal in ein testmambo integriert in der hoffnung, das bei der integration die db so umgeschrieben wird, dass die beiden foren identisch sind im aufbau ihrer DB. Leider hat es nicht eingestellt !

Folglich muss das noch die datenstruktur vom alten yabbse board sein !

Gibt es denn einen sql befehl der den alten aufbau in einen neuen umformt.

Beim Vergleich beispielsweise von der tabelle smf_messages vom neuen forum XXX haben die zeilen den aufbau
ID_MSG    ID_TOPIC      ID_BOARD      posterTime     ID_MEMBER       subject          posterName      posterEmail       posterIP       smileysEnabled   modifiedTime        modifiedName      body  icon

Im alten  Forum YYY sieht es aber so aus:
ID_MSG    ID_TOPIC      ID_MEMBER      subject        posterName          posterEmail         posterTime          posterIP         smileysEnabled     modifiedTime         modifiedName         body          icon          ID_BOARD

Das zieht sich nämlich so weiter in den anderen Tabellen, wie beispielsweise bei smf_members. So bekomme ich auch immer eine Fehlermeldung, wenn ich die Members aus dem alten Forum in das neue überspielen will.

Kann mir da jemand helfen ?

AAHHHH ich kann doch nicht die ganze db per hand umbauen müssen, weiß ja gar nicht wie das gehen soll !

cya and greetz

ディン1031

Quote from: hansy51 on June 06, 2005, 06:27:33 PM
Beim Vergleich beispielsweise von der tabelle smf_messages vom neuen forum XXX haben die zeilen den aufbau
ID_MSG    ID_TOPIC      ID_BOARD      posterTime     ID_MEMBER       subject          posterName      posterEmail       posterIP       smileysEnabled   modifiedTime        modifiedName      body  icon

Im alten  Forum YYY sieht es aber so aus:
ID_MSG    ID_TOPIC      ID_MEMBER      subject        posterName          posterEmail         posterTime          posterIP         smileysEnabled     modifiedTime         modifiedName         body          icon          ID_BOARD
Hmm für mich sehen die beiden Tabellen gleich aus XD.
Nur das die Spalte ID_BOARD ganz hinten ist *g*.

Normalerweise ist die reihenfolge der Spalten doch egal ;). (Auser man mach einen csv import ohne spaltennamen).

Mal eine frage wie impotierst du die daten eigentlich?
Per .sql datei?

Weil auf anhieb ist das für mich etwas merkwürdig =).

Gruß
DIN1031
Support only via MOD Thread! NO PM Support!
My Forum: ayu][kult Forum
My Mods: My Small Mod Collection
My Parser: DIN1031's ModParser
Current Info: More away the next days, because i've to much work to do :x

mediman

Die Tabellen sind von der Struktur her identisch ...
Ein Import mit expliziter Spaltenangabe sollte ohne Probleme funktionieren ...

medi
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

mmmh habe schon probiert die daten aus dem alten forum zu exportieren und sie dann in die neue zu überspielen, leider gab er mir hier eine fehlermeldung !
wie kann man es denn mit expliziter spaltenangabe bewerkstelligen und wo finde ich das in phpmyadmin ?

thx


mediman

Zeig uns doch mal so ein insert.sql ...
Dann können wir dir sagen woran es hängt ...
Es muss ja nicht zwangsläufig an der Struktur hängen, auch ein Probleminsert wäre denkbar ...
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

Hallo, me again !

Ich weiß zwar nicht was ein insert.sql ist, aber ich denke mal es wird die fehlermeldung sein, die ich bekomme, wenn ich etwas von der db vom alten forum in die db des neuen forums überspielen will.

So ich schildere jetzt einfach mal was passiert, wenn ich eine zeile aus der tabelle smf_members exportieren will, passiert.

Im alten Forum nehme ich jetzt mal eine beliebige Zeile und exportiere sie als sql file. Ich nehme dabei extra einen Member, dessen ID im neuen Forum noch nicht vergeben ist. Ich exportiere dabei nur die Daten. Hier ist der SQL Code


  • INSERT INTO `yabbse_members` VALUES (30, 'Haggel-bary', 'Haggel-bary', '1196550f2fe0ba8f9f23425c076a1ad8', '[email protected]', 1030664143, 'I love YaBB 1G - SP1!', 0, '0000-00-00', '', '', '', '', '', '', 1, '', '', 0, 0, 'blank.gif', '', 0, 0, 0, 0, '', '', 1, 1, '', '', '', '', 0, 0, 3, 0, 1, '', 0, '', 1, '', 0, 4, '');

Dann nehme ich den befehl und importiere in die neue db über das SQL Kommandofenster !
Dann bekomme ich zawr die Meldung, dass alles geklappt hat, aber die Werte passen, ja in den einzelnen Zellen nicht, z.B. hat er dan als language-file: 1030664143 und das kann ja nicht sein !

Es liegt ja einfach daran, dass der SQL Befehl einfach stur die Zeilen mit den Werten besetzt, in der sie aufeglistet sind, und nicht darauf achten, dass die Daten an der richtigen Stelle einzufügen sind !

Wie bekomme ich also hin, dass er nicht stur die Werte einsetzt nach der Reihenfolge, sondern darauf achtet, was wohin muss.

Möglichkeiten gibt es ja zwei:
1. Entweder man macht einen derartigen SQL Befehl das alles richtig eingeordnet wird.
oder
2. Man ändert die Tabellenstruktur der alten DB so, dass sie identisch ist mit der neuen !

Leider habe ich keine Ahnung, wie ich das machen kann !

Könnt ihr mir helfen !

Danke

ディン1031

#13
Okay das hast du nur die standard optionen gewählt =), und dann weiß natürlich das insert nix von spaltenname ;)



Wenn die optionen gewählt sind ;) dann kommt sowas raus
->

INSERT INTO smf_messages (ID_MSG, ID_TOPIC, ID_MEMBER, subject, posterName, posterEmail, posterTime, posterIP, smileysEnabled, modifiedTime, modifiedName, body, icon, isHighlighted, nowListening, ID_BOARD, nowPlaying)
VALUES (25, 12, 0, 'Re:Final Fantasy', 'JapanFan', 'secret@email', 1041877869, '0.0.0.0', 1, 0, NULL, 'Ich hab nur den 8,9 und 10 Teil. Und aus diesen Teilen finde ich Garnet,Squall und Yuna am Besten. Tidus geht so', 'xx', 0, '', 8, ''),
(7, 6, 1, '44th Japan Record Grand Prix', 'montu', 'secret@email', 1041783338, '0.0.0.0', 1, 0, NULL, 'Ayu gewann auch in diesem Jahr am 31.12.02 den Grand Prix.<br /><br />http://www.nikkansports.com/news/entert/p-et-tp0-030101-07.html<br />http://www.sponichi.com/ente/200301/01/ente101405.html<br />http://www.nikkansports.com/news/flash/f-et-tp0-021231-18.html<br /><br />[img]http://www.nikkansports.com/news/entert/et-030101-1.jpg[/img] [img]http://www.nikkansports.com/news/flash/f-et-021231-06.jpg[/img]<br /><br />Was für eine Frau :P', 'xx', 0, '', 1, ''),
usw...


Damit weiß dann auch die tabelle das sie die werte den spalten zuordnen soll :)

Jetzt muß man nur noch aufpassen das smf_messages nun den tabellenamen bekommt den es in der andern hat ;D weil sonst findert er die tabelle nicht ;).
Support only via MOD Thread! NO PM Support!
My Forum: ayu][kult Forum
My Mods: My Small Mod Collection
My Parser: DIN1031's ModParser
Current Info: More away the next days, because i've to much work to do :x

mediman

Guck dir was du geschrieben hast nochmal genau an ...
Was fällt dir auf, in bezug auf unsere vorangegangen Schriebseleien?

Richtig, du nutzt den kurzen INSERT ...

Ein Bleistift:

Du hast eine Tabelle User mit 3 Spalten, diese heissen Name, Beruf, Wohnort

Exportiertst du diese als kurzes Insert sieht das so aus:

INSERT INTO `User` VALUES ('Klaus', 'Bäcker', 'Berlin');

Wenn du das in eine neue Tabelle packst, die User heisst aber die Spalte folgendermassen angeordnet hat, nämlich Beruf, Wohnort, Name dann heisst der Typ ab sofort Berlin wohnt in Bäcker und ist von Beruf Klaus ...

Was tun?

am Besten in phpMyAdmin bei Export das Häkchen bei "Vollständige 'INSERT's" machen, dann sieht der Insert so aus:

INSERT INTO `User`(`Name`, `Beruf`, `Wohnort`) VALUES ('Klaus', 'Bäcker', 'Berlin');´

mit diesem Insert, wird egal wieviele andere Spalten und an welcher Stelle sich die Spalten befinden immer der Value Klaus der Spalte Name, der Value Bäcker der Spalte Beruf und der Value Berlin der Spalte Wohnort zugeordnet!

mediman





My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

mediman

Achso Anmerkung, aus Kompatibilitätsgründen die erweiterten Inserts nicht auswählen ...
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

hansy51

cool danke, dass ist das was ich wissen wollte !

co werde mich jetzt mal aufmachen und ein bißchen herumdoktern !

vielen vielen dank !

hansy51

bin es noch einmal kurz. Ich habe jetzt einmal alle members in meine db überspielt, was auch super geklappt hat (ach bin ich froh).
jetzt haben aber alle neu eingefügten user bei "ID THEME" die 3 stehen und bekommen somit ein falsches template angezeigt ( ich denke mal einfach dass das wegen dieser spalte so ist). Wie kann ich denn jetzt mit einem sql befehl die spalte ID THEME bei jedem member auf 0 stellen. Dann müssten Sie ja das gewollte template angezeigt bekommen !

Sorry ich weiß, dass ist jetzt sehr sql spezifisch, aber hier wird man ja so super geholfen (ja so kann man das schreiben, so steht es ja sogar im DUDEN)  !

Offtopic:
kann mir jemand ne gute seite verraten, die mir hilft sql zu lernen ! DANKE ! Ich will ja nicht die ganze Zeit fragen müssen.


So nochmal vielen Dank gute Nacht.

cya

ディン1031

#18
Quote from: mediman on June 08, 2005, 03:37:16 PM
Achso Anmerkung, aus Kompatibilitätsgründen die erweiterten Inserts nicht auswählen ...
Aus neugier ;) was ist das eigentlich genau der unterschied *g*.

(Hab das bis jetzt immer so gemacht und ging deswegen würde ich doch mal gern den unterschied wissen XD)
-----
@hansy51
Normalerweise geht das mit diesen Befehl ;)

UPDATE smf_members
SET ID_THEME = "0"
WHERE ID_THEME != "0"


Einfach in der "SQL-Befehl(e) ausführen in Datenbank" eingeben.

(Eventuell zu sicherheit ne kopie von der Tabelle vorher machen, aber ich bin mir sehr sicher das es richtig ist.)

Normalerweise sollte es dann alle die nicht 0 sind auf 0 setzen ;).

Woher hilfe? ;)
http://dev.mysql.com/doc/ *g*

Support only via MOD Thread! NO PM Support!
My Forum: ayu][kult Forum
My Mods: My Small Mod Collection
My Parser: DIN1031's ModParser
Current Info: More away the next days, because i've to much work to do :x

mediman

erweiterte Inserts wurden früher als multiline Inserts verkauft ...
Leider gibt es da bei älteren mySQL-Versionen Probleme mit dem Hochladen ...
Von daher hab ich mir angewöhnt auf diese zu verzichten ...
Wer aber auf dem selben Server bleibt, und damit auf der selben mySQL-Version, der kann sich mit den erweiterten Inserts ein recht übersichtliches SQL-Filegedöns erzeugen lassen ...

für die Consolenfreaks

komplette Inserts entsprechen

-c oder wer es ausführlich mag --complete-insert

erweiterte Inserts entsprechen

-e respektive --extended-insert
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

ディン1031

Danke wuste ich garnicht =).

Für die zukunft weiß ich das ;D.

Gruß
DIN1031
Support only via MOD Thread! NO PM Support!
My Forum: ayu][kult Forum
My Mods: My Small Mod Collection
My Parser: DIN1031's ModParser
Current Info: More away the next days, because i've to much work to do :x

Advertisement: