Så vitt jag vet kan bulkinsert inte infoga en tom sträng, den kan antingen behålla nullvärde eller använda standardvärde med keepnulls-alternativet eller utan keepnulls-alternativet. För dina 3 exempelposter, efter infogning av databasen, bör det vara så här:
| id | name | 1 | NULL | 1 | "" | 1 | ''
Anledningen är att bulkinfogningen kommer att behandla ditt första rad, andra kolumnvärde som null; för andra 2 rader, tar det andra kolumnvärdet som inte null och tar det som det är.
Istället för att låta Bulk Insert infoga ett tomt strängvärde åt dig, kan du låta dig tabellkolumn ha standardvärdet som tom sträng.
Exempel som följande:
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
Resultatet blir som följande:(Den första raden i din CSV kommer att få en tom sträng)
| id | name | 1 | | 1 | "" | 1 | ''