Meinst du Postgres? Ich bin mir nicht sicher, worum es hier geht.
Was ich tun würde, ist, wenn die Benutzer-ID 0 ist, den Benutzernamen für die ID zu verwenden. Wenn find_username_by_import_id den Benutzer nicht findet, erstelle den Benutzer, setze die E-Mail-Adresse auf fake_email (es ist eine Funktion in base.rb, die eine gefälschte E-Mail-Adresse generiert) und den Benutzernamen mit dem vorhandenen Benutzernamen. Wenn du ehrgeizig bist, könntest du am Ende des Skripts alle Benutzer sperren, die @email.invalid in ihrer E-Mail-Adresse haben. Sie werden nicht aktiv sein, daher denke ich nicht, dass es viel ausmacht, wenn du sie nicht sperrst.
Eine andere Möglichkeit wäre, eine Abfrage durchzuführen, die irgendwie eine Liste aller gelöschten Benutzer generiert und sie dann erstellt, bevor du mit den Beiträgen beginnst, aber das scheint schwieriger zu sein.
Wenn du einen Benutzer namens deleted user erstellen möchtest und möchtest, dass all diese Beiträge diesem Benutzer gehören und nicht system, könntest du das tun und einfach die -1 durch die Benutzernummer von deleted user ersetzen. Du könntest ihn als normalen Benutzer erstellen oder etwas Besonderes tun und ihm eine Benutzer-ID von -2 oder etwas Ähnlichem geben.
In einigen Systemen liegt das daran, dass Anhänge manchmal im Text des Beitrags enthalten sind und in anderen der Anhangsdatensatz in der Datenbank steht.
Hast du das Plugin Migrated password hashes support installiert, nachdem du den Import durchgeführt hast (es kann den Import in zumindest einigen Umständen stören). Hash-Passwörter von SMF2 auf die gleiche Weise wie smf?