sql >> Database teknologi >  >> RDS >> Sqlserver

BULK INSERT mangler sidste række?

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.




  1. PLSQL JDBC:Hvordan får man sidste række-id?

  2. Hvordan opretter man forbindelse til en MySQL-database fra en Android-app?

  3. Implementering af historik for PostgreSQL-tabellen

  4. Postgres Kontroller, om IP (inet) er i en liste over IP-områder