Så vidt jeg ved, kan bulk insert ikke indsætte tom streng, den kan enten beholde null-værdi eller bruge standardværdi med keepnulls-indstilling eller uden keepnulls-indstilling. For dine 3 eksempelposter, efter indsættelse af database, skulle det være sådan:
| id | name | 1 | NULL | 1 | "" | 1 | ''
Årsagen er, at bulkinsert vil behandle din første række, anden kolonne værdi som null; for andre 2 rækker, vil den anden kolonnes værdi som ikke null, og tage den som den er.
I stedet for at lade Bulk Insert indsætte tom strengværdi for dig, kan du lade dig tabelkolonne have standardværdien som tom streng.
Eksempel som følgende:
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 bliver som følgende:(Den første række i din CSV vil få en tom streng)
| id | name | 1 | | 1 | "" | 1 | ''