Na wie ich das gemacht habe? Ich sage das mal so ein etwa, denn da ist auch ein Script von mir beteiligt und das behalte ich für mich 
Man nehme die alten URLs und die neuen URLs
Baue bei den alten URLs erst mal die Forennamen mit in die URL, damit die in etwa gleich sind wie die neuen URLs, zumindest vom Anfang her. (je genauer, desto besser)
Dann geht man her und dupliziert die alten Links. In der Kopie lässt man alle IDs (von den Posts bzw. Threads) entfernen - da die nicht mit den neuen IDs übereinstimmen
Nun werden die ID-losen URLs in einer Tabelle denen mit ID gegenübergestellt. Sortiert wir die Spalte mit den ID-losen. Dadurch sortiert sich auch die eigentliche Liste mit.
Das mit dem Duplizieren, IDs entfernen und gegenüberstellen macht man auch mit den neuen Links. Ebenfalls sortiert.
So hat man also vier Listen, die alle nach dem Alphabet sortiert sind und nicht mehr wild durcheinander wegen den falschen IDs.
Dann geht man her und nimmt aus den beiden Gegenüberstellungen jeweils die Liste mit den IDs, denn das sind die Originalurls, die ohne ID waren nur für die Sortierung. Nun kann man her gehen und die per Hand alle vergleichen. Ich für meinen Fall habe da eine Art "winmerge", das Input "links" und "rechts" vergleicht, nicht nur String für String, sondern auch per Ähnlichkeit. Und hier kommt dann aber die bestmögliche Übereinstimmung vom Anfang zum Tragen. Je näher die URLs von links und rechts zusammen stehen, desto wahrscheinlicher ist die Übereinstimmung.
Letztendlich war es dann aber dennoch etwas Handarbeit (mehr als gedacht), da manche URLs eben sehr verfälscht wurden. Gerade im Bereich SEO und Off-Topic. Bei SEO wegen dem SEO und PR und insbesondere im Off-Topic, da da viele Titel waren, die ein Was, wer wie, wo drinnen hatten, das alte Forum die aber nicht in die URL aufnahm. Folge war dann, dass eine URL, die eigentlich nach hinten in den Bereich "w" gehört plötzlich ganz vorne stand, da das erste Wort fehlte. Und da die Liste Off-Topic extrem lang ist kommt der Abstand von links und rechts hier extrem zum Tragen.
Im Grund hatte ich das Script damals mal entworfen um zwei verschiedene Exports von Backlinkcheckern zu vergleichen, welche Links gleich sind, welche ähnlich etc.
Ansonsten, ein anderer Ansatz, den ich gestern ja versuchte, daher auch der DB-Error. Man kann alle alten URLs abfangen, diese an ein PHP-Script schicken und dort den Titel auslesen. Diesen Titel fragt man im neuen Forum per Suche ab (direkte Query). Wenn es da mehrere Treffer geben sollte, kann man das auch lösen.
Oder, man biegt die vbSEO URLs dynamisch wieder um auf das original vb4 und schickt die Anfrage dann direkt an das Forum. vb5 setzt das dann selbst um.