Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

बल्क इंसर्ट अंतिम पंक्ति गायब है?

मैंने आपकी समस्या को SQL Server 2008 R2 पर पुन:प्रस्तुत किया। समाधान आपकी फ़ाइल में एक नई पंक्ति जोड़ने जितना आसान है ताकि अंतिम पंक्ति एक नई पंक्ति के साथ समाप्त हो जाए।

मैंने दो फ़ाइलें बनाईं:

फिर निम्न स्क्रिप्ट चलाई:

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;

परिणाम 1:

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

परिणाम 2:

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

समाधान यह सुनिश्चित करने जितना आसान होना चाहिए कि अंतिम पंक्ति \r\n . के साथ समाप्त हो जाए . या तो आप टेक्स्ट फ़ाइल बनाने वाली प्रक्रिया को बदल दें या बल्क इंसर्ट करने से ठीक पहले इसे मैन्युअल रूप से करें।

इसे मैन्युअल रूप से करने का एक तरीका EXEC xp_cmdshell 'echo. >> C:\temp\without_newline.txt' बल्क इंसर्ट करने से ठीक पहले।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डिज़ाइन द्वारा शून्य SQL गतिरोध - कोई कोडिंग पैटर्न?

  2. क्या इनर जॉइन कंडीशन में 'OR' होना एक बुरा विचार है?

  3. सारणीबद्ध से बहुआयामी में एसक्यूएल-सर्वर डीबी बदलना

  4. एसक्यूएल सर्वर 2008 सीटीई रिकर्सन

  5. SQL सर्वर लेनदेन लॉग, भाग 2:लॉग आर्किटेक्चर