書き残しておこうと思います。

mysqldumpあれこれ。




mysqldumpで、特定のテーブルだけ(複数可)を指定するときは、

$> mysqldump -u user -p pass database table1 table2 ・・・ >dump.sql


これで基本的にはOK。





どこかのテーブルの主キー(数値)が、テーブル名にくっついているときとか、あるかもしれない。

そんなテーブルがたくさんあるかも知れない。

data_1、data_2、・・・とか。

・・・かもしれない。ね。





キーの配列を取得したいので、こんな感じでシェル書きます。
id_list=(`mysql -u user -p pass database -e ”select id from theTable;”`)
sqlの部分はご自由に。




で、その配列の値を使って、テーブル名のリストを作ります。こんな感じ。
index=0
for (( i=1; i<${#id_list[*]}; i++))

   table_list[$index]=”vote_answer_${id_list[$i]}”
   index=$[${index}+1]



id_list[0]の中には、カラム名の” id ”が入ってしまっているので、そこは不要。

なので、for文の i は1からにしてます。

${#id_list[*]}は、listの要素数を取得する書き方です。javaだとlist.size()ってとこでしょうか。





あとは、mysqldumpです。最初に書いたやつです。
mysql -u user -p pass ${table_list[@]} > dump.sql





これでちょっと幸せになれます。

※ 間違い等見つかりましたら、ぜひご指摘願います!




(2009-02-27 追記)
上記に間違いがありましたので、訂正いたしました。