Redmineの公式サイトからRESTで取得したXMLファイルは、ユーザーが画面から入力するフィールドが主で、システム内部で使用するフィールドは含まれていません。
今回は「issues」テーブルに直接データを投入する予定ですので、こうしたフィールドにも値を設定する必要があります。
また、文字化けを防ぐためには、CSVファイルをUTF-8にする必要があるのですが、Excelの標準機能は対応していません。そこでエクスポートには、fnyaさん作のアドオン『Excel CSV I/O』を使用させていただくことにしました。
XMLデータと「issues」テーブルの比較
RESTで取得したXMLファイルと「issues」テーブルのフィールドを比較すると、XMLファイル側に次のフィールドが不足していました。
- lock_version
- parent_id
- root_id
- lft
- rgt
- is_private
Redmineの公式サイトでチケット内容を見ると、ラベル「親チケット」が表示されないので、親子チケットの構成にする必要はなさそうです。また、プライベートチケットに設定する必要もありませんね。これらのことから、不足していたフィールドには次のように値を設定することにしました。
フィールド名 | 値 |
---|---|
lock_version | 0 |
parent_id | (NULL) |
root_id | チケット番号 |
lft | 1 |
rgt | 2 |
is_private | 0 |
Excelシートに列(フィールド)を追加
先の検討に沿って、Excelシートに列(フィールド)を追加して値をセットしました。並び順ですが、『A5:SQL Mk-2』にはマッピングの機能があるので、空いているところに追加すればOKです。

データをCSV形式でエクスポート
これで必要な変換はすべて終わったので、CSV形式でエクスポートします。ただ、EXCELの標準機能ではUTF-8でCSVファイルを作成できませんので、fnyaさん作のアドオン『Excel CSV I/O』を使用させていただきます。出力時の設定は次の通りです。

長かったですが、これでデータの準備がすべて整いました。次はいよいよ、MySQL(Redmine)の「issues」テーブルに、『A5:SQL Mk-2』を使用してデータを投入します。
コメント