Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

BULK INSERT липсва последният ред?

Възпроизвеждах вашия проблем на SQL Server 2008 R2. Решението е толкова просто, колкото добавяне на нов ред към вашия файл, така че последният ред да завършва с нов ред.

Създадох два файла:

След това изпълни следния скрипт:

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;

Резултат 1:

first_name  | last_name_etc     | sex | test
--------------------------------------------
Tom         | Jackson 2/28/1986 | M   | test

Резултат 2:

first_name  | last_name_etc     | sex | test
--------------------------------------------
Tom         | Jackson 2/28/1986 | M   | test
Mike        | Johnson 1/29/1987 | M   | NULL

Решението трябва да е толкова просто, колкото да се уверите, че последният ред завършва с \r\n . Или променяте процеса, който генерира текстовия файл, или го правите ръчно непосредствено преди груповото вмъкване.

Един от начините да направите това ръчно е да стартирате EXEC xp_cmdshell 'echo. >> C:\temp\without_newline.txt' точно преди да направите груповото вмъкване.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на SELECT SCOPE_IDENTITY() в ADODB Recordset

  2. sql заявка за динамично добавяне на фискален месец с помощта на осно

  3. Как идентифицирате последователности от модели на записи в записи, използващи TSQL?

  4. Определете размера на реда за таблицата

  5. Създаване на персонализирано изображение на SQL Server Docker върху официалното изображение