問題を SQL Server 2008 R2 で再現しました。解決策は、最後の行が改行で終了するようにファイルに改行を追加するのと同じくらい簡単です。
2 つのファイルを作成しました:
<オール>次に、次のスクリプトを実行しました:
CREATE TABLE #t(first_name VARCHAR(128),last_name_etc VARCHAR(128),sex CHAR(1),test VARCHAR(128));BULK INSERT #tFROM 'C:\temp\without_newline.txt' WITH ( FIELDTERMINATOR='\t', ROWTERMINATOR='\n');SELECT * FROM #t;TRUNCATE TABLE #t;BULK INSERT #tFROM 'C:\temp\with_newline.txt'WITH ( FIELDTERMINATOR='\t' , ROWTERMINATOR='\n');SELECT * FROM #t;DROP TABLE #t;
プレ>結果 1:
first_name |姓など |セックス |テスト--------------------------------------------トム |ジャクソン 1986 年 2 月 28 日 |み |テスト
プレ>結果 2:
first_name |姓など |セックス |テスト--------------------------------------------トム |ジャクソン 1986 年 2 月 28 日 |み |テストマイク |ジョンソン 1987 年 1 月 29 日 |み |ヌルコード> プレ>
解決策は、最後の行が
\r\n
で終了していることを確認するのと同じくらい簡単です。 .テキスト ファイルを生成するプロセスを変更するか、一括挿入を行う直前に手動で行います。これを手動で行う 1 つの方法は、
EXEC xp_cmdshell 'echo.>> C:\temp\without_newline.txt'
一括挿入を行う直前。