主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

SQLServer で CSV のインポート/エクスポート

最終更新日 2007-05-09 18:28:16 (1年以上前の記事です)

SQLServer で CSV 形式のデータファイルを import/export するには、 bcp コマンドを使用すると便利です。フォーマットファイルというのを指定することで、型の定義も可能で非常に便利。
またインポートは、 osql で BULK INSERT クエリを発行することでも対応できます。

エクスポート(export)

エクスポートを行うための bcp コマンドは以下のようなフォーマットです。
> 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

インポート(import)

インポートは以下のようなコマンドで行います。
> 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')

フォーマットファイルの書式

最後にフォーマットファイルの書式ですが、 export すれば分かるとおり、以下のような書式になってます。
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
を指定できます。

最終更新日 2007-05-09 18:28:16

コメント このエントリーをはてなブックマークに追加

フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank2, rank3, rank7, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google