Jeg gengav dit problem på SQL Server 2008 R2. Løsningen er så simpel som at tilføje en ny linje til din fil, så den sidste række afsluttes med en ny linje.
Jeg oprettede to filer:
Kørte derefter følgende script:
CREATE TABLE #t(first_name VARCHAR(128),last_name_etc VARCHAR(128),sex CHAR(1),test VARCHAR(128));
BULK INSERT #t
FROM 'C:\temp\without_newline.txt'
WITH (
FIELDTERMINATOR='\t',
ROWTERMINATOR='\n'
);
SELECT * FROM #t;
TRUNCATE TABLE #t;
BULK INSERT #t
FROM 'C:\temp\with_newline.txt'
WITH (
FIELDTERMINATOR='\t',
ROWTERMINATOR='\n'
);
SELECT * FROM #t;
DROP TABLE #t;
Resultat 1:
first_name | last_name_etc | sex | test
--------------------------------------------
Tom | Jackson 2/28/1986 | M | test
Resultat 2:
first_name | last_name_etc | sex | test
--------------------------------------------
Tom | Jackson 2/28/1986 | M | test
Mike | Johnson 1/29/1987 | M | NULL
Løsningen skal være så enkel som at sørge for, at den sidste linje afsluttes med \r\n
. Enten ændrer du processen, der genererer tekstfilen, eller gør det manuelt lige før du laver masseindsættelsen.
En måde at gøre dette på manuelt ville være at køre EXEC xp_cmdshell 'echo. >> C:\temp\without_newline.txt'
lige før du laver masseindsættelsen.