sql >> データベース >  >> RDS >> Sqlserver

BULK INSERT に最後の行がありませんか?

    問題を SQL Server 2008 R2 で再現しました。解決策は、最後の行が改行で終了するようにファイルに改行を追加するのと同じくらい簡単です。

    2 つのファイルを作成しました:

    <オール>
  1. 次に、次のスクリプトを実行しました:

    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' 一括挿入を行う直前。




    1. SQLクエリの配列?

    2. ストアドプロシージャパラメータSQLにINステートメントを使用する

    3. Oracleの日付から先行ゼロを削除する方法

    4. WHERE句のMySQLユーザー定義変数