SQLServerでフォーマットファイルを作成する
フォーマットファイルとはテーブルのカラム情報を定義したファイルで、例えばCSVファイルをテーブルにインポートする場合、CSVの各項目とテーブルのマッピングを行う際に使用できます。
ここではそのフォーマットファイルを作成する方法について紹介します。
コーディング例
サーバー(localhost\INSTANCE)のデータベース(TestDB)へフォーマットファイルを作成する対象となるテーブルを作成します。
CREATE TABLE TBL_TEST( ID INT ,Code NCHAR(5) ,[Name] NVARCHAR(10) )
以下のbcpコマンドを実行しフォーマットファイルを作成します。
bcp dbo.TBL_TEST format nul -c -x -f C:\TBL_TEST.xml -t, -S localhost\INSTANCE -U sa -P password -d TestDB
実行結果
TBL_TEST.xml
<?xml version="1.0"?> <BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RECORD> <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="12"/> <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="10" COLLATION="Japanese_CI_AS"/> <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="20" COLLATION="Japanese_CI_AS"/> </RECORD> <ROW> <COLUMN SOURCE="1" NAME="ID" xsi:type="SQLINT"/> <COLUMN SOURCE="2" NAME="Code" xsi:type="SQLNCHAR"/> <COLUMN SOURCE="3" NAME="Name" xsi:type="SQLNVARCHAR"/> </ROW> </BCPFORMAT>
bcpコマンドについて解説します。
引数「dbo.TBL_TEST」はフォーマットファイルを作成する対象となるテーブル名を指定します。
引数「format nul -x -f C:\TBL_TEST.xml」はフォーマットファイルの保存先とXML形式で作成することを意味します。
引数「-c」は文字データを指定しており、引数「-t,」はコンマ(,)を区切り文字として指定しています。
これにより出力されたXMLの
引数「-S」はサーバー名、引数「-U」はログインユーザ名、引数「-P」はログインパスワード、引数「-d」はデータベース名を指定します。
以上、SQLServerでフォーマットファイルを出力するの紹介でした。