Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从生产日志中恢复Redmine数据_Ruby On Rails_Ruby_Logging_Redmine - Fatal编程技术网

Ruby on rails 从生产日志中恢复Redmine数据

Ruby on rails 从生产日志中恢复Redmine数据,ruby-on-rails,ruby,logging,redmine,Ruby On Rails,Ruby,Logging,Redmine,我在Redmine有一个超过600期的项目。我将所有问题转移到另一个项目。我不知道移动会删除自定义字段的所有数据 因此,所有自定义字段值现在都将丢失。在执行此操作之前,我没有备份数据库,因为我真的不认为移动问题会造成任何伤害,因为移动是UI中的本机功能 我注意到production.log包含所有创建和更新的事件。我的600个问题在生产日志中都是有序的。如何使用这些日志语句重复操作?如果我可以导入所有日志操作,我就可以迁移它写入原始Redmine实例的自定义字段并恢复我的值 条目如下所示: Pr

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

我真的希望有一种方法,任何帮助都将受到极大的感谢

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

  • 从日志中提取
  • 删除不必要的信息
  • 复制到电子表格中
  • 将文本拆分为列
  • 使用必要的SQL命令“更新集等”将外接程序列复制到此列等的所有行中
  • 联接列以每行生成一个文本命令
  • 将关联数据导出到文本文件
  • 以sql形式运行测试数据库
  • 如果一切顺利,则以sql形式运行生产数据库
日志条目,在“参数:”之后,看起来像一个常规的Ruby哈希定义。我将把它解析出来,然后
eval
将其返回到散列变量中

从那里,您需要剥离元素并将其插入数据库。我会用Sequel,但用适合你的


与RedMine支持人员交谈,获取他们的表的模式,这样您就可以了解数据的去向以及数据库驱动程序的需要

你有没有和他们的支持者谈过,听听他们的想法?这将是第一件要尝试的事情。这不是最简单的任务,但我也做过类似的事情。编写了一个pearl脚本,并首先将其转换为csv,在这里我必须手动清理地图项目。然后使用另一个pearl脚本将数据转换为insert语句。。。