2016-03-29 9 views
5
BULK INSERT [Alldlyinventory] 
    FROM  'C:\Users\Admin\Documents\2NobleEstates\DATA\Download\Output\test.txt' 
    WITH (FORMATFILE = 'C:\SQL Data\FormatFiles\test.xml'); 

स्वरूप फ़ाइल:थोक सम्मिलित - फ़ाइल की अनपेक्षित समाप्ति का सामना करना पड़ा था

<?xml version="1.0"?> 
<BCPFORMAT  xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<RECORD> 
    <FIELD ID="1" xsi:type="CharFixed" LENGTH="8"  COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="7"  COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="3" xsi:type="CharFixed" LENGTH="4"  COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="4" xsi:type="CharFixed" LENGTH="1"  COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
    <FIELD ID="5" xsi:type="CharFixed" LENGTH="10"  COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
</RECORD> 
<ROW> 
    <COLUMN SOURCE="1" NAME="DAY_NUMBER" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="2" NAME="LCBO_NO" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="3" NAME="LOCATION_NUMBER" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="4" NAME="LISTING_STATUS" xsi:type="SQLNVARCHAR"/> 
    <COLUMN SOURCE="5" NAME="QTY_ON_HAND" xsi:type="SQLNVARCHAR"/> 
</ROW> 
</BCPFORMAT> 

लेकिन मैं एसक्यूएल सर्वर पर निम्न त्रुटि 2014 हो रही है:

Msg 4832, Level 16, State 1, Line 1 Bulk load: An unexpected end of file was encountered in the data file. Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. Msg 7330, Level 16, State 2, Line 1 Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)".

यह एक निश्चित चौड़ाई आयात है।

नमूना txt:

2016032803170570371L 000000014 
2016032803367430371L 000000013 
2016032803403800371L 000000036 
2016032804007540371L 000000015 
+0

मुझे स्पष्ट बताएं? ** पंक्ति 1, कॉलम 1 के लिए डेटा फ़ाइल में कॉलम बहुत लंबा है। सत्यापित करें कि फ़ील्ड टर्मिनेटर और पंक्ति टर्मिनेटर सही तरीके से निर्दिष्ट हैं। ** –

+0

क्षमा करें, यह एक निश्चित चौड़ाई थोक डालने – Ben

+0

आपकी txt फ़ाइल खाली हो सकती है अतं मै। क्या आप 'ERRORFILE' का उपयोग कर सकते हैं और समस्या उत्पन्न कर रहे पंक्ति को ढूंढ सकते हैं? यह देखने के लिए कि क्या यह मदद करता है, 'ROWTERMINATOR =' 0x0A'' (हालांकि अनियंत्रित) का उपयोग करने का प्रयास करें। – Kin

उत्तर

4

अपने नमूना पाठ फ़ाइल को देखते हुए, ऐसा लगता है जैसे आप एक पंक्ति टर्मिनेटर है कि गाड़ी वापसी ({CR}) + linefeed ({LF}) है लग रहा है।

आप टेक्स्ट एडिटर के साथ टेक्स्ट फ़ाइल खोलकर इसका निरीक्षण कर सकते हैं जो विशेष प्रतीकों को दिखा सकता है। मैं Notepad++ की सिफारिश कर सकता हूं जो इस उद्देश्य के लिए नि: शुल्क और अच्छा है (मेनू View>Show Symbol>Show All Characters)।

पंक्ति टर्मिनेटर वास्तव में {CR}{LF} है, तो आप <RECORD> तत्व में पिछले <FIELD> के लिए एक TERMINATOR="\r\n" विशेषता के साथ xsi:type="CharTerm" उपयोग करना चाहिए:

<RECORD> 
    ... 
    <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\r\n" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 
</RECORD> 

आप में निश्चित क्षेत्र आयात के बारे में अधिक जानकारी पा सकते हैं निम्न लिंक: XML Format Files (SQL Server) # Importing fixed-length or fixed-width fields

+0

हाय, डेटा {CR} {LF} के साथ समाप्त होता है लेकिन मुझे निम्न त्रुटि मिल रही है: इस प्रकार के लिए विशेषता "ROWTERMINATOR" निर्दिष्ट नहीं की जा सकी। इसके बाद, मैंने ROWTERMINATOR को टर्मिनर में बदल दिया और यह काम किया। बहुत बहुत धन्यवाद। मैं वास्तव में इस मंच और लोगों की सराहना करता हूं। – Ben

+0

@ बेन आह हाँ आप सही हैं, सही विशेषता 'टर्मिनेटर' है (उत्तर अद्यतन)। खुशी हुई यह मदद की =)। –

संबंधित मुद्दे

 संबंधित मुद्दे