ToddZ
2024 年1 月 9 日 23:17
1
我有几个(82)用户和(133)帖子想从之前一个失败的平台迁移过来。数量不多,但足够让复制粘贴变得繁琐。我初步希望尝试 CSV 导入脚本。这将是我第一次使用 Ruby 脚本。
我已经按照 discourse/script/import_scripts/csv_importer.rb at main · discourse/discourse · GitHub 的要求准备好了 CSV 文件。
但除非我遗漏了什么,否则 CSV 导入脚本似乎不完整。我在 CSV 要求或脚本中都没有看到将帖子与父主题关联的规定。不确定这最终会是什么样子。
我也希望保留原始帖子的日期,但这里没有相应的字段。
Zendesk 导入器 确实处理了“topic_id”和“created_at”字段。我不知道 Zendesk 导入器是否会是更好的选择,或者它是否会在我的 CSV 数据所缺少的字段上失败。(我不是来自 Zendesk。)
想知道是否有人使用过现有的 CSV 导入器,或者是否对其进行过修改以添加功能。
nathank
(Nathan Kershaw)
2024 年1 月 10 日 01:10
2
我之前在使用核心功能(并赞助了 @pfaffman 的开发)之前就使用了 CSV 导入器。
它似乎可以很好地保留主题中的帖子,以及原始的帖子日期。为什么不先在暂存实例(或备份后)上试用一下,看看会发生什么?
如果存在问题,可以修复该脚本——但我怀疑它对你来说效果很好。
1 个赞
ToddZ
2024 年7 月 21 日 21:05
3
终于要回来处理这件事了,之前搁置了一段时间。如果成功的几率看起来不错,我愿意做一个备份并尝试一下,但我在这里需要更多的信心。我缺乏脚本编写经验,但我真的很想了解 csv 导入器 将如何保留帖子(回复)和日期,正如 @nathank 所建议的,因为脚本似乎没有定义任何处理它们的方法。
它导入有限的字段:用户、电子邮件、自定义用户字段、类别和主题。
我不需要自定义用户字段或新类别,因此相关的 CSV 及其指定的字段是:
== CSV 文件格式
文件名:users
标题:id,username
文件名:emails
标题:user_id,email
文件名:topics_new_users
标题:id,user_id,title,category_id,raw
文件名:topics_existing_users
标题:id,user_id,title,category_id,raw
从对这个 数据模型 的一瞥来看,Discourse 的主题(Topics)和帖子(Posts)是两种不同的实体,具有一些区分字段:
我在脚本中没有看到任何处理帖子(Posts)或日期的方法。
也许我应该将传入的主题(Topic)和帖子(Post)数据合并在一起,但如果是这样,Discourse 将如何推断主题/回复关系——仅仅是输入的顺序吗?回复是否与具有共享 ID 的第一个出现的主题相关?关于 ID,它只说了:
除了 topics_existing_users,数据中的 ID 可以是任何值,只要它们在文件之间保持一致。
如果脚本没有遗漏什么,那一定是我遗漏了。我感谢任何澄清的意见!