2012年5月2日水曜日

SQL Serverのインポート/エクスポートについて

SQL ServerにCSVファイルをインポート/エクスポートを行うときのTipsや覚え書きあれこれ。

エクスポート

bcp DB名.スキーマ名.テーブル名 out c:\export.csv -S インスタンス名 -U ユーザID -P パスワード -c -t,

対象テーブルのデータが文字列、フィールド区切り文字「,」のCSVファイルがexport.csvというファイルでCドライブ直下に出力されます。

※このときブランクのカラムにはテキストエディタで見ると半角スペースが入っています。実際には空文字を現す文字列が入っているようなのでエクスポートしたCSVファイルを編集する場合は注意してください。

インポート

bcp DB名.スキーマ名.テーブル名 in c:\import.csv -S インスタンス名 -U ユーザID -P パスワード -c -t,

対象テーブルにフィールド区切り文字「,」のCSVファイルのデータをインポートします。

とまあ、MSDNの説明通りだと上記コマンドでインポートが実行されるはずですがうまくいきませんでした。CSVファイルがタブ区切りの場合はオプションの-cだけでインポート可能です(-cオプションのフィールド区切り文字はタブ区切りなので)。

今回はカンマ区切りのCSVファイルを扱いたかったので-fオプションを使用しました。-fはフォーマットファイルというものが必要になるので以下のコマンドで出力したいテーブルのフォーマットファイルを作成。

bcp DB名.スキーマ名.テーブル名 format null -S インスタンス名 -U ユーザID -P パスワード -c -t, -x -f c:\format.xml

作成されたフォーマットファイルを開き、ターミネーターに「,」、データごとの区切りに「\r\n」を指定します。このフォーマットファイルをCドライブ直下に配置して以下のコマンドでインポートできました。

bcp DB名.スキーマ名.テーブル名 in c:\import.csv -S インスタンス名 -U ユーザID -P パスワード -f c:\format.xml

0 件のコメント:

コメントを投稿