¿Tienes experiencia importando usuarios y temas desde archivos CSV?

Tengo algunos (82) usuarios y (133) publicaciones que me gustaría transferir de un intento fallido en una plataforma anterior. Pocos, pero suficientes para que copiar y pegar sea tedioso. Tentativamente, espero probar el script importador de CSV. Sería la primera vez que trabajo con un script de Ruby.

He preparado archivos CSV según discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub

Pero a menos que me esté perdiendo algo, el script de importación de CSV no parece completo. No veo ninguna disposición en los requisitos de CSV ni en el script para asociar publicaciones con temas principales. No estoy seguro de cómo se vería esto al final.

También me gustaría que se conservaran las fechas originales de las publicaciones, pero no hay un campo para eso aquí.

El importador de Zendesk sí maneja los campos “topic_id” y “created_at”. No sé si el importador de Zendesk sería una mejor opción, o si fallaría en campos que mis datos CSV no tienen. (No vengo de Zendesk).

Me pregunto si alguien tiene experiencia con el importador de CSV tal como está, o quizás lo ha modificado para agregar funcionalidad.

Lo usé antes de que se incorporara al núcleo (y patrociné su desarrollo por @pfaffman).

Parecía conservar las publicaciones en los temas sin problemas, así como las fechas de las publicaciones originales. ¿Por qué no intentarlo en una instancia de staging (o simplemente después de una copia de seguridad) y ver qué sucede?

Si hay problemas, sería bueno arreglar el script, pero sospecho que hará el trabajo perfectamente para ti.

1 me gusta

Finalmente vuelvo a esto después de haberlo pospuesto un tiempo. Estoy dispuesto a hacer una copia de seguridad y probar algo si puedo vislumbrar una posibilidad de éxito, pero anhelo un poco más de confianza aquí. Carezco de mucha experiencia en scripting, pero me gustaría mucho entender cómo el importador de CSV conservaría las publicaciones (respuestas) y las fechas, como sugiere @nathank, ya que el script no parece definir ningún manejo de ellas.

Importa campos limitados para: usuarios, correos electrónicos, campos de usuario personalizados, categorías y temas.

No necesito campos de usuario personalizados ni nuevas categorías, por lo que los CSV relevantes y sus campos especificados son:

 == Formato de archivos CSV
Nombre del archivo: users
encabezados: id,username

Nombre del archivo: emails
encabezados: user_id,email

Nombre del archivo: topics_new_users
encabezados: id,user_id,title,category_id,raw

Nombre del archivo: topics_existing_users
encabezados: id,user_id,title,category_id,raw

Al observar este modelo de datos, los Temas y las Publicaciones de Discourse son dos criaturas diferentes con algunos campos diferenciadores:

No veo nada en el script para manejar Publicaciones, ni fechas.

Tal vez se supone que debo agrupar los datos entrantes de Temas y Publicaciones, pero si es así, ¿cómo inferiría Discourse la relación tema/respuesta? ¿Es solo la secuencia de la entrada? ¿Las respuestas se relacionan con un Tema que tiene la primera aparición de un ID compartido? Todo lo que dice sobre los ID es:
excepto para topics_existing_users, los ID en los datos pueden ser cualquiera siempre que sean consistentes entre los archivos.

Si al script no le falta algo, entonces me falta a mí. ¡Agradezco cualquier pensamiento aclaratorio!