¿Te refieres a Postgres? No estoy seguro de a qué te refieres.
Lo que haría es que si el ID de usuario es 0, usar el nombre de usuario para el ID. Luego, si find_username_by_import_id no encuentra al usuario, crea el usuario, estableciendo la dirección de correo electrónico en fake_email (es una función en base.rb que genera una dirección de correo electrónico falsa) y el nombre de usuario con el nombre de usuario que tienes. Luego, si eres ambicioso, podrías, al final del script, suspender a todos los usuarios que tengan @email.invalid en su dirección de correo electrónico. No estarán activos, así que no creo que importe mucho si no los suspendes.
Otra forma sería hacer una consulta que de alguna manera generara una lista de todos los usuarios eliminados y luego crearlos antes de empezar a publicar, pero eso parece más difícil.
Si quieres crear un usuario usuario eliminado y que todas esas publicaciones sean propiedad de ese usuario en lugar de system, podrías hacerlo y simplemente reemplazar el -1 con el número de usuario de usuario eliminado. Podrías crearlo como un usuario normal o hacer algo elegante y darle un ID de usuario de -2 o algo así.
En algunos sistemas, esto se debe a que a veces los archivos adjuntos están en el cuerpo de la publicación y, en otros, el registro del archivo adjunto está en la base de datos.
¿Instalaste el plugin Soporte para hashes de contraseñas migrados después de ejecutar la importación (puede interferir con la ejecución de importaciones en al menos algunas circunstancias)? ¿SMF2 hashea las contraseñas de la misma manera que smf lo hace?