2014-06-24

SQLSERVER テーブルのXML型の列へ XMLファイルから取り込む一例

  1. XML宣言のエンコーディングを "utf-16" にする
  2. BOMつきのUTF-16(Unicode)でファイル保存する
  3. 次のようなSQL文を流す

INSERT INTO TBL SELECT TBL.COL FROM OPENROWSET(BULK 'filepath', SINGLE_NCLOB) AS TBL(COL)

他の方法もいろいろあるだろう。ただ、文字コードに関して言及すると、SQL SERVER の内部データUCS-2UTF-16のサブセット)なので、合わせておいたほうが無難UTF-16以外で取り込もうとすると、日本語付近で "XML 文字が無効です" などとエラーになる場合が多い(もちろん原因は何かあるのだろうが、調べてもさっぱり私には見当がつかない。時間の浪費はいやずら)。

'filepath'は、SQL SERVERインスタンスが動いているマシンにとってのファイルパスね。'E:\???\???.xml'や'\\filesvr01\shared\data\???.xml'とか。

SELECT COL.query('/ELEM/NODE') FROM TBL など、あとはいろいろクエリーしてみてくれ。

感謝

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん