Até onde eu sei, a inserção em massa não pode inserir uma string vazia, ela pode manter o valor nulo ou usar o valor padrão com a opção keepnulls ou sem a opção keepnulls. Para seus 3 registros de amostra, após inserir o banco de dados, deve ficar assim:
| id | name | 1 | NULL | 1 | "" | 1 | ''
O motivo é que a inserção em massa tratará o valor da primeira linha e da segunda coluna como nulo; para outras 2 linhas, tomará o valor da segunda coluna como não nulo e o considerará como está.
Em vez de permitir Bulk Insert inserir um valor de string vazio para você, você pode permitir que a coluna da tabela tenha o valor padrão como string vazia.
Exemplo como segue:
CREATE TABLE BulkInsertTest (id int, name varchar(10) DEFAULT '')
Bulk Insert same CSV file into table
BULK INSERT Adventure.dbo.BulkInsertTest
FROM '....\test.csv'
WITH
(
FIELDTERMINATOR ='\,',
ROWTERMINATOR ='\n'
)
SELECT * FROM BulkInsertTest
O resultado será o seguinte:(A primeira linha do seu CSV receberá uma string vazia)
| id | name | 1 | | 1 | "" | 1 | ''