私の知る限り、一括挿入では空の文字列を挿入できません。null 値を保持するか、keepnulls オプションを使用するか keepnulls オプションを使用せずにデフォルト値を使用できます。 3 つのサンプル レコードの場合、データベースを挿入すると、次のようになります。
その理由は、一括挿入では最初の行、2 番目の列の値が null として扱われるためです。他の 2 行については、2 番目の列の値を null ではないと見なし、そのまま受け取ります。
Bulk Insert で空の文字列値を挿入する代わりに、テーブルの列にデフォルト値を空の文字列として挿入することができます。
以下の例:
CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '')
同じCSVファイルをテーブルに一括挿入
BULK INSERT Adventure.dbo.BulkInsertTest
FROM '....\test.csv'
WITH
(
FIELDTERMINATOR ='\,',
ROWTERMINATOR ='\n'
)
SELECT * FROM BulkInsertTest
結果は次のようになります:(CSV の最初の行は空の文字列になります)
<プレ> | ID |名前 | 1 | | | 1 | "" | 1 | ''