DBMS の seed data は手で作ってもいいけど DB から出力して生成してもよい。特に Typus などの管理画面用のツールを使っている場合、とりあえず手で入力してどんなもんか見て、それを export するようにするとお手軽だし、他の人にデータ作りを手伝ってもらいやすくなると思う。
まぁとにかくそんなこんなで DBMS の export について調べてみた。
Typus
Typus の csv export は gem v 3.0.4 以降で正しく機能する。ただし、
Typusのcsv downloadがセミコロン区切りな件 - あーありがち(2011-01-18)
に書いた通り。Comma Separated じゃない。
DBMS
Typus を採用しているのを前提として。
Typus の export 機能は大事だが、それより大事なのは開発者のデータの取り回し。Typus がうまく動かない場合は他の機能で実現する必要がある。
Rails の helper を書いて export を作ることはもちろん可能だしそれほど難しくないが、Typus の利用を前提にすると管理画面にこうした細かい機能追加を行うのはややこしいしゼロから書きたくない。
ということで次は SQL レベルの方法。(そもそも頻繁に発生しない前提。)
SQL COPY
PostgreSQL で作られたものを SQLite が porting している。つまりこの2つでは COPY コマンドが使える。
MySQL は INTO
MySQL は SELECT の INTO でファイルに吐き出したりできるみたい。
MySQL :: MySQL 5.5 Reference Manual :: 12.2.9 SELECT Syntax
なるほどな。select 一発でできてしまうとは。
SQLite でも .mode csv にすればよいし、PostgreSQL でも
-A
--no-align
Switches to unaligned output mode. (The default output mode is
otherwise aligned.)
-F separator
--field-separator separator
Use separator as the field separator for unaligned output. This
is equivalent to \pset fieldsep or \f.
-o filename
--output filename
Put all query output into file filename. This is equivalent to
the command \o.
-t
--tuples-only
Turn off printing of column names and result row count footers,
etc. This is equivalent to the \t command.
の組み合わせで実現できるかな。でも使うオプションが多いな。