1 回答
- 321
DB操作は自己責任になるのでバックアップは忘れずに。
そのうえで参考ナレッジベースの通り bodycotent テーブルを更新すれば変更できるかと。
参考ナレッジベース
- How to Change URLs of External Gadgets
- How to bulk update JIRA Issue Macro to point to a different JIRA instance
- Some attachments or links are no longer accessible after server migration
ナレッジベースを目的としてページ内のマクロに指定されているURLとかを変える方法です。
例えば、とあるスペースのすべてのページ(ブログ、下書き、履歴を含む)の先頭に hello ユーザマクロを追加するとなったら以下のようなSQLになるかと思います。
UPDATE bodycontent SET body = concat('<ac:structured-macro ac:name="hello" ac:schema-version="1"><ac:parameter ac:name="Name">world</ac:parameter></ac:structured-macro>',body) WHERE contentid IN (SELECT contentid FROM bodycontent WHERE contentid IN (SELECT contentid FROM content WHERE spaceid IN (SELECT spaceid FROM spaces WHERE spacekey = '<スペースキー>')))
DBはPostgreSQL想定です。
SQLのスペースキーは読み替えてください。
ページの編集はページ履歴が残りますが、上記SQL操作だとページのXMLデータを直接変更しているためページ履歴は残りません。
あとConfluenceはページ内容をキャッシュしているため
DB操作後に管理画面でキャッシュをフラッシュするか(稼働中のDB操作は推奨できませんが…)
Confluence停止、DBバックアップ、DB操作、Confluence起動の手順が必要です。
あと最後に必ずインデックス再構築もしておいてください。
- Shuzaburo Doba
私も bodycontent テーブル の body カラムを更新することで変更されました。
ただし、共同編集が有効になっている場合、
そのページを編集すると以前のページの情報が表示されました。関連しそうな https://confluence.atlassian.com/confkb/how-to-manually-edit-a-page-title-through-the-database-with-synchrony-enabled-942838925.html の内容を試してみても変わらず...
共同編集を無効にすると問題ありませんでした。
- 蒼龍
ありがとうございました。
無事挿入させることができました。
コメントを追加...
大量のページにユーザーマクロを挿入する必要が出てきたのでDBを使ってマクロを挿入しようと思っているのですが、DB上でページを編集してもConfluenceの画面に反映されません。
どうやったらDB上からConfluenceのページを編集できるでしょうか?