sql >> Databasteknik >  >> RDS >> Sqlserver

BULKINSTÄLLNING saknas sista raden?

Jag återskapade ditt problem på SQL Server 2008 R2. Lösningen är så enkel som att lägga till en ny rad i din fil så att den sista raden avslutas med en ny rad.

Jag skapade två filer:

Körde sedan följande skript:

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 bör vara så enkel som att se till att den sista raden avslutas med \r\n . Antingen ändrar du processen som genererar textfilen eller gör det manuellt precis innan du gör massinsättningen.

Ett sätt att göra detta manuellt skulle vara att köra EXEC xp_cmdshell 'echo. >> C:\temp\without_newline.txt' precis innan du gör bulkinfogningen.




  1. Utför enkel aritmetik i MySQL-sats eller i PHP-kod

  2. MySQL Välj alla kolumner från en tabell och några från en annan tabell

  3. Fel vid försök att hämta text för fel ORA-01804

  4. PHP:Kyrilliska (ryska) tecken ekar som frågetecken. Varför?