2013-02-16 84 views
0

我在Redmine中有一個項目,有600多個問題。我將所有問題都轉移到了不同​​的項目中。我不知道這一舉措會刪除自定義字段的所有數據!從生產日誌中恢復Redmine數據

所以所有的自定義字段值現在都丟失了。在此操作之前我沒有備份數據庫,因爲我真的不認爲我將通過移動問題來做任何傷害,因爲移動是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"=>""} 

我真的很希望有一種方法,任何幫助將不勝感激

+0

你有沒有和他們的支持人員討論過他們的想法?這將是第一件嘗試。 – 2013-02-16 11:12:37

回答

0

你可以使用一個像樣的文本編輯器和/或電子表格應用程序並執行一個巨大的查找和替換,並構建一系列UPDATE SQL命令,並直接在數據庫上運行他們(第一次測試!!)

  • 摘自日誌
  • 刪除unnessary信息
  • 複製到電子表格
  • 拆分文本列
  • 添加在必要的SQL命令「UPDATE SET等」列複製到該列中的所有行等
  • 加入列作一個每
  • 行文本命令
  • 導出爲SQL連接的數據到一個文本文件
  • 運行對測試數據庫
  • 如果一切順利的話對生產數據庫運行如SQL
+0

不是最簡單的任務,但我做了類似的事情。寫了一個珍珠腳本,並將其轉換爲csv,我必須手動清理地圖項目。然後使用另一個珍珠腳本並將該數據轉換爲插入語句... – eakkas 2013-02-20 20:13:35

0

「Parameters:」後面的日誌條目看起來像一個常規的Ruby哈希定義。我會解析出來,然後將其返回到一個哈希變量。

從那裏您將需要剝離元素並將它們插入到數據庫中。我會用Sequel做到這一點,但使用適合你的東西。

與RedMine交談支持人員併爲他們的表獲取模式,這樣您就可以確定數據到哪裏以及數據庫驅動程序需要什麼。