SQLite DBの変更作業をしてみました
大して何も考えずに作ったpatch(マルチリポジトリの件)のわりに
普通に動いてる(と思う)ので本格的に移行。
1.trac.iniの修正
2.dbの修正
のような感じでできるかなと思いましたが、
dbの修正を行うのにSQLite Database browserだけで作業すると
ちょっと大変なので、
テーブルをexport、テキストエディタで置換作業、
テーブルにimportのような作業にならないか
試行錯誤。
guiでSQLiteのdbを操作できるものの中で
export/importで文字コードの指定ができ、操作性もよいもの
ということでtksqliteを探し出す。
http://reddog.s35.xrea.com/wiki/TkSQLite.html#download
ちゃんと日本語のguiです。
これで、tksqliteで編集したいテーブルを「列名を出力」にして
text(csv)に出力(UTF-8))し、編集、
tksqliteで「1行目を列として扱う」にしてtext(csv)(UTF-8))でとりこみ。
(DBは必ずバックアップを取ってから編集。)
取り込みの際は、
編集したいテーブルを表示、全て選んで削除にし、
そこに読み込む。
(スキームの定義などやるのは大変だからこれが一番楽。
これが簡単にやれるのはtksqliteくらいじゃないかと。)
あとはtext化したものをUTF-8でどう編集するか。
私の場合、作業のひとつに
//trac/aaa/changeset/xxx
↓
changeset:xxx/aaa
のような置換(xxxは数字の文字列)が100個以上必要でした。
テキストエディタや他のテキスト変換フリーウェアを探し、
もともとそういう操作ができないか
試すと結果に誤りが出ることがあるなどでどれも使えず。
結局pythonでやってみることに。
# -*- coding: utf-8 -*-
import sys, string
import reargvs = sys.argv #コマンドライン引数リスト
argc = len(argvs) #引数の個数if (argc != 3): #3でなければ出る
quit()
fin = open(argvs[1], "r")
fout = open(argvs[2], "w")s="//trac/aaa/changeset/"
s0="changeset:"
s1="/aaa"
for x in fin.readlines():
n=x.find(s) #-1ならなし
if n!=-1:
#sがあれば次は必ず数字が来ると想定
#数字がどこまであるか検索する
start = (n+len(s))
for m in range(1,len(x)-len(s)):
if not x[start:(start+m)].isdigit():
break
s2 = x[start:(start+m-1)] #s2は数字の文字列
x = re.sub(s+s2,s0+s2+s1 , x) #置換
fout.write(x)
fin.close()
fout.close()
これをrepl.pyという名前とすると、
python repl.py wiki.csv wiki_out.csv
でとりあえずできました。
残りの編集はテキストエディタで行い、tksqliteを使ってimport。
やっと文字化けなしで変更作業を終えました。
| 固定リンク
「trac」カテゴリの記事
- tracdを使ってみる(2011.11.05)
- excelreportexportプラグインのtrac0.12対応(2010.09.23)
- subversionのコミットログを検索して置換(2010.09.02)
- windowsでtrac 0.12を試す(その4)(2010.08.22)
- trac0.12無理やり対応PeerReviewPlugin修正版(2010.08.20)
「TracLightning」カテゴリの記事
- tracdを使ってみる(2011.11.05)
- excelreportexportプラグインのtrac0.12対応(2010.09.23)
- subversionのコミットログを検索して置換(2010.09.02)
- windowsでtrac 0.12を試す(その4)(2010.08.22)
- trac0.12無理やり対応PeerReviewPlugin修正版(2010.08.20)
「python」カテゴリの記事
- subversionのコミットログを検索して置換(2010.09.02)
- pySerial/pyWin32でシリアル通信、でも受信が…(2009.10.21)
- pythonでUTF8→S-JIS変換?結局UTF8のまま。(2009.04.02)
- SQLite DBの変更作業をしてみました(2009.02.19)
この記事へのコメントは終了しました。
コメント