从生产日志中恢复Redmine数据

时间:2013-02-16 09:51:48

标签: ruby-on-rails ruby logging redmine

我在Redmine有一个项目超过600个问题。我将所有问题都移到了另一个项目中。我不知道移动会删除自定义字段的所有数据!

因此现在所有自定义字段值都丢失了。我没有在此操作之前备份数据库,因为我真的不认为我会通过移动问题来做任何伤害,因为移动是UI中的本机功能。

我注意到虽然production.log包含所有创建和更新的事件。我的所有600个问题都在生产日志中。如何使用这些日志语句重复操作?如果我可以导入所有日志操作,我可以将它写入的自定义字段迁移到原始Redmine实例并恢复我的值。

参赛作品如下:

Processing IssuesController#update (for XX.XX.XX.X at 2013-02-07 11:19:54) [PUT]
Parameters: {"_method"=>"put", "authenticity_token"=>"nWNSSRYjHhN0BGb+Ya8M4pYWPPgsfdM=", "issue"=>{"assigned_to_id"=>"", "custom_field_values"=>{"10"=>"", "5"=>"Not translated", "1"=>"fi", "8"=>"http://screencast.com/t/ODknR8K", "9"=>"", "3"=>"", "4"=>""}, "done_ratio"=>"0", "due_date"=>"", "priority_id"=>"4", "estimated_hours"=>"", "start_date"=>"2013-02-07", "subject"=>"1\tInstallation in English", "tracker_id"=>"1", "lock_version"=>"0", "description"=>"Steps:\r\nOpen Nitro\r\n\r\nProblem:\r\nNot localized"}, "controller"=>"issues", "time_entry"=>{"hours"=>"", "activity_id"=>"", "comments"=>""}, "attachments"=>{"1"=>{"description"=>""}}, "id"=>"3876", "action"=>"update", "commit"=>"Submit", "notes"=>""}

我真的希望有办法,任何帮助都会受到高度赞赏

2 个答案:

答案 0 :(得分:0)

您可以使用体面的文本编辑器和/或电子表格应用程序进行大量查找,替换并构建一系列UPDATE SQL命令并直接在数据库上运行(TEST FIRST !!)

  • 从日志中提取
  • 删除不一致的信息
  • 复制到电子表格
  • 将文本拆分为列
  • 使用必要的SQL命令“UPDATE SET etc”将列复制到此列的所有行等。
  • 连接列以每行创建一个文本命令
  • 将已加入的数据导出到文本文件
  • 以sql
  • 的身份对测试数据库运行
  • 如果一切顺利针对生产数据库运行为sql

答案 1 :(得分:0)

“参数:”后面的日志条目看起来像是常规的Ruby哈希定义。我将其解析出来并eval将其重新转换为哈希变量。

从那里你需要剥离元素并将它们插入数据库。我会使用Sequel做到这一点,但使用适合你的东西。

与RedMine支持人员交谈并获取其表的架构,以便您可以确定哪些数据位于何处以及所需的数据库驱动程序。