トップ «前の日記(2011-02-19) 最新 次の日記(2011-02-21)» 編集

2011-02-20 [長年日記]

_ DBMSのexport

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.

の組み合わせで実現できるかな。でも使うオプションが多いな。

Tags: DBMS