CODEPAGEオプションを使えば、BULK INSERTはShift JIS以外の文字コードのデータフィルを読むことができます。 ただし、読み込むデータファイルの文字コードにUTF-8は対応していないようです。
なお、DATAFILETYPEオプションを使えばNCHARやNVARCHAR列に取込むとき、UNICODEに変換して保存してくれますので、 取込むファイルの文字コードを気にする必要はありません。 どんな文字コードのファイルをBLUK INSERTしても、SQLServer内では「UNICODE」で保持されます。
例えば、以下のような要件の場合は、
データファイル | Shift JIS |
---|---|
挿入先のテーブル |
|
WEBページの文字コード | UTF-8 |
以下のようなBULK INSERT文になります。
なお、WEBページ上での表示はSQLドライバーの問題ですので、適切にドライバーを使えば、問題なくUTF-8で表示できます。
ID(IDENTITY)列を持つテーブルにBULK INSERTを単純に行うとファイルのID列に該当するフィールドの値は無視され、SQLServerが自動付与します。 これはデータファイルにある値より、内部のオートインクリメントを優先するためです。 下記に例を示します。
挿入先のテーブル |
|
---|---|
CSVの中身 |
|
MEMBER_INFOテーブルにBULK INSERTを使ってCSVファイルをインポート |
|
結果(SELECT * FROM MEMBER_INFO) |
CSVファイルのID列の値は無視され、自動で採番される。
|
ID列の値をそのまま使用した(挿入したい)場合は、「KEEPIDENTITY」オプションを使います。
KEEPIDENTITYを使ったBULK INSERT |
|
---|---|
結果(SELECT * FROM MEMBER_INFO) |
|
COPYRIGHT © 2008 Deepnet Inc. ALL RIGHTS RESERVED.