SQLServer で CSV 形式のデータファイルを import/export するには、 bcp コマンドを使用すると便利です。フォーマットファイルというのを指定することで、型の定義も可能で非常に便利。
またインポートは、 osql で BULK INSERT クエリを発行することでも対応できます。
> bcp dbname out export.csv -P -Usa -fexport.fmt -odata.log
ここでは export.csv ファイルにデータを出力し、書式をあらわすフォーマットファイルを export.fmt で指定し、ログを data.log に書き出すよう指定しています。
なお -f オプションでフォーマットファイルを指定しなかった場合、フォーマットファイルを対話式に指定しながら作成してくれます。
また特定のレコードやカラムだけを出力したい場合は、 SELECT クエリを指定して実行することも可能です。
bcp "SELECT * FROM db_name..table_name WHERE a=b" queryout dump.out -U sa -P
> bcp dbname in import.csv -P -Usa -fimport.fmt -odata.logもしくは BULK INSERT を用いて、
BULK INSERT pubs..dbname FROM 'c:\import.csv' WITH (FORMATFILE = 'c:\import.fmt')
7.0 3 1 SQLCHAR 0 8 "," 1 user_id 2 SQLCHAR 0 255 "," 3 user_name 3 SQLCHAR 0 8 "\r\n" 2 age
一行目がバージョン
二行目がカラム数
三行目以降が実際のカラムレコードで、
一列目が CSV ファイルの順序
二列目がデータ型
三列目がプレフィックスの長さ
四列目がデータ長
五列目が区切り文字
六列目がデータベース側の順序
七列目がカラム名
八列目に必要であれば collation
を指定できます。