![]() |
Daten von einer SQL Tabelle in eine ander kopieren
Ich versuche gerade ein Forum zu konvertieren, hierzu möchte ich alle User und Beiträge ins neue Forum übertragen.
Die Userdaten habe ich einfach als .csv exportiert für die neue Tabelle umgestöpselt und wieder importiert. Bei den Beiträgen geht das nicht, es sind zu viele, auch den Import bekomm ich im Excel nicht Fehlerfrei hin. Ich möchte nun direkt in phpmyAdmin die Inhalte aus einer Tabellenspalte in eine andere Kopieren, geht das? Ja? Wie? Bitte, Danke ! |
Wenn beide Tabellen in der selben Datenbank sind müsste das (glaube ich) so funktionieren:
Insert into tabelle2 (spalte1, spalte2, spalte3) (select spalte2,spalte5,spalte3 from tabelle1) |
Ok Kopieren hab ich hinbekommen, aber hab ein neues Problem.
Ich hab so kopiert: INSERT INTO `phpbb_posts_text`(`post_id`,`bbcode_uid`,`post_su bject`,`post_text`) SELECT `forumpost_threadid`,`forumpost_bbcode`,`forumpost _title`,`forumpost_text` FROM `phpkit_forumpost` aber nun benötige ich eine Kopie, einer Spalte aus einer Tabelle die nach einer bestimmten Spalte sortiert ist, damit sich die Daten nicht vermischen... Ich hab in der Qelltabelle_1 eine Spalte "Thread_id" und "Forum_id", in der Quelltabelle_2 "Thread_id" und "Post_id" Die Quelltabellen sind wenn ich sie mir unter phpMyAdmin ansehe unterschiedlich sortiert, wenn ich die Daten aus den beiden Tabellen in eine "Zieltabelle" zusammenkopiere passen sie nicht mehr zueinander. Meine Idee war nun einfach die erste, "Quelltabelle_1", nach dem selben Kriterium wie die zweite, "Quelltabelle_2" zu sortieren nämlich "Post_id" Mit dieser Sortierung dann die Daten aus den beiden in meine Zieltabelle zu kopieren, so würden die Datensätze dann wieder passen. Leider bekomme ich das mit dem Sortieren nicht hin, ich kann sie zwar sortieren aber die Einstellung bleibt nur solange ich mir die Tabelle ansehe, verlasse ich die Ansicht ist die Sortierung weg :( Hilfe :heul: |
Ok, auch erledigt, aber neues Problem :mad:
Ich hab nun Daten in einer Tabelle, nun möchte ich EINE Spalte der tabelle mit den inhalten einer Spalte einer anderen Tabelle befüllen, habe das wie Folgt versucht: INSERT INTO `phpbb_posts` (`forum_id`) SELECT `forumthread_catid` FROM `phpkit_forumthread` Leider werden nicht nur die Daten Kopiert sondern es werden komplette neue Einträge angelegt, das funktioniert natürlich nicht. |
UPDATE Funktion verwenden mit entsprechenden SELECT
|
Update war ein guter Tipp, hab mich nun 3 Stunden im google gequählt aber habs hinbekommen :)
Zur Erklärung: ( phpkit_forumcat = Quell-Tabell A) ( forumcat_postcount = Quell Spalte ( phpbb_forums = Ziel-Tabelle B) ( forum_posts = Ziel Spalte ) UPDATE `phpkit_forumcat`,`phpbb_forums` SET `phpbb_forums`.`forum_posts`=`phpkit_forumcat`.`fo rumcat_postcount` WHERE `phpbb_forums`.`forum_id`=`phpkit_forumcat`.`forum cat_id` |
okey einiges hab ich schon geschafft aber nun hab ich eine echte Aufgabe:
Die Quell-Tabelle hat folgende Spalten: post_id / thread_id / Viele Posts (post_id) sind einem Thread zugeteilt In der Zieltabelle habe ich folgende Spalten: thread_id / first_post_id / last_post_id ich muss nun für jeden Thread (thread_id) den ersten und lezten Post (post_id) definieren. Per Hand schaff ich das nicht, ~2000 Threads und 20.000 Beiträge, ich denke aber das es mit einer guten WHERE Anweisung klappen sollte, könnte mir bitte jemand helfen? |
Probier mal...
Code:
UPDATE Zieltabelle SET first_post_id = SELECT MIN(QuellTabelle.post_id) FROM QuellTabelle WHERE QuellTabelle.thread_id = ZielTabelle.thread_id |
Danke !
ich hab einen syntaxfehler drinn und find ihn nicht... Fehler SQL-Befehl: http://mysqlsvr04admin.world4you.com...img/b_help.png UPDATE "phpbb_topics" SET "phpbb_topics". "topic_first_post_id" = SELECT MIN( "phpkit_forumpost". "forumpost_id" ) FROM "phpkit_forumpost" WHERE "phpkit_forumpost". "forumthread_id" = "phpbb_topic". "thread_id" MySQL meldet: http://mysqlsvr04admin.world4you.com...img/b_help.png #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen (diese kann für verschiedene Server-Versionen unterschiedlich sein) bei '"phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT MIN'in Zeile 1 _____________________________ Habs auch so probiert: UPDATE "phpkit_forumpost","phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT "phpkit_forumpost"."forumpost_id" MIN("phpkit_forumpost"."forumpost_id") FROM "phpkit_forumpost" WHERE "phpkit_forumpost"."forumthread_id"="phpbb_topic". "thread_id" Und So: UPDATE "phpkit_forumpost","phpbb_topics" SET "phpbb_topics"."topic_first_post_id" = SELECT "phpkit_forumpost"."forumpost_id", MIN("phpkit_forumpost"."forumpost_id") FROM "phpkit_forumpost" WHERE "phpkit_forumpost"."forumthread_id"="phpbb_topic". "thread_id" __________________________________ |
Falls du auf einer mySQL Datenbank arbeitest musst du glaub ich das SELECT in extra Klammern setzen. Also so...
Code:
UPDATE "phpbb_topics" SET "phpbb_topics". "topic_first_post_id" = (SELECT MIN( "phpkit_forumpost". "forumpost_id" ) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 01:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag