sql >> Databáze >  >> RDS >> Sqlserver

HROMADNÉ VLOŽENÍ chybí poslední řádek?

Váš problém jsem reprodukoval na SQL Server 2008 R2. Řešení je stejně jednoduché jako přidání nového řádku do souboru tak, že poslední řádek končí novým řádkem.

Vytvořil jsem dva soubory:

Poté spusťte následující 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;

Výsledek 1:

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

Výsledek 2:

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

Řešení by mělo být tak jednoduché, že se ujistěte, že poslední řádek končí znakem \r\n . Buď změníte proces, který generuje textový soubor, nebo to proveďte ručně těsně před hromadným vkládáním.

Jedním ze způsobů, jak to udělat ručně, by bylo spustit EXEC xp_cmdshell 'echo. >> C:\temp\without_newline.txt' těsně předtím, než provedete hromadné vložení.




  1. Jak získat velikosti tabulek databáze MySQL?

  2. Z mysql float byla vrácena nesprávná hodnota

  3. Seřaďte podle hodnot 2 sloupců

  4. Když spustím program, JPA nevytvoří tabulku v MySQL