mysqldumpのメモ
割とmysqldumpは便利なんだけど、割と単なるバックアップにしかつかわれていないので。(phpmyadminとかつかえばいいし…みたいな)
DBを色々書き換える作業前に、とりあえずデータ保存しておきたいな、バックアップは別にあるから、最悪のケースにそなえてちょっとだけとっておきたいな、という時の使い方のメモ
mysqldump -u root -p --disable-keys --order-by-primary -c --skip-extended-insert -w'category_id=9' database_name item_table > dump.sql
とか。
DB名と、テーブル名は勿論指定するとして、
とりあえず、戻す速度が遅いといわれようと、そんな用途ではないので、-cと--skip-extended-insert を指定しないと、エディタでサーチとか大変になるので指定したほうがよい
変更するデータのレンジが分かっているなら、-w'〜〜' を指定して、取得しておくデータのレンジをちゃんと指定しておく方がよい
--order-by-primary は趣味なんだけど、あったほうが便利じゃない??
絶対にCSVがいいよ!ということであれば(エクセル信者でもなければ、結局あんまりお勧めできないけど)
mysqldump -u root -p --order-by-primary -w'category_id=9' --fields-terminated-by=, --fields-optionally-enclosed-by=\" --lines-terminated-by="\n" --tab=/path/to/outputdir/ database_name item_table
でもよい。
でも、これめんどいのはSchemaとDataが別ファイルにでる都合上(Schemaいらなければ、-tオプションつける、でもCSVにはカラムネームとかでないので、一応出しておいた方が良いのでは?)、出力先にパイプが使えないのがだるい。
あと、-wオプションのWHERE指定がどこにも記載ないのが怖い。
まあ、SQLを置換でCSVデータに整形したほうが早いのでは…。NULLが\Nとかもキモいし
色々な理由で、というか文字コードがUTF-8以外という悪夢の状態であれば、--default-character-set=binaryをつけたり、
今のサービスにあまり影響を与えたくないとか言うなら、 --lock-tables=false も必要か。(あれ、今はデフォルトFalseなんだっけ?)
あとは--disable-keys くらい?
以上。