0

我在 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"=>""}

我真的希望有办法,任何帮助将不胜感激

4

2 回答 2

0

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

  • 从日志中提取
  • 删除不必要的信息
  • 复制到电子表格
  • 将文本拆分为列
  • 添加具有必要 SQL 命令“UPDATE SET 等”复制到该列的所有行等的列。
  • 连接列以使每行一个文本命令
  • 将连接的数据导出到文本文件
  • 以 sql 对测试数据库运行
  • 如果一切顺利,以 sql 形式针对生产数据库运行
于 2013-02-16T10:07:33.880 回答
0

“参数:”之后的日志条目看起来像一个常规的 Ruby 哈希定义。我会将其解析出来并将eval其返回为哈希变量。

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

与 RedMine 支持人员交谈并获取他们的表的架构,以便您了解哪些数据在哪里以及所需的数据库驱动程序。

于 2013-02-16T11:10:12.063 回答