SQLServerでフォーマットファイルを作成する

データベース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のタグの「xsi:type」「TERMINATOR」属性が決まります。
引数「-S」はサーバー名、引数「-U」はログインユーザ名、引数「-P」はログインパスワード、引数「-d」はデータベース名を指定します。

以上、SQLServerでフォーマットファイルを出力するの紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ