2010-09-29 11 views
6

थोक सम्मिलन आदेश के साथ आप फ़ील्ड लम्बाई कैसे निर्दिष्ट करते हैं?थोक सम्मिलित निश्चित चौड़ाई फ़ील्ड

उदाहरण: अगर मैं एक मेज ग नाम दिया: \ अस्थायी \ TableA.txt और यह था:

123ABC 
456DEF 

और मैं इस तरह के रूप में एक मेज था:

use tempdb 
CREATE TABLE TABLEA(
Field1 char(3), 
Field2 char(3) 
) 
BULK INSERT TableA FROM 'C:\Temp\TableA.txt' 
SELECT * FROM TableA 

तो मैं कैसे होगा फ़ील्ड 1 और फील्ड 2 के लिए लंबाई निर्दिष्ट करें?

उत्तर

12

मैं तुम्हें एक प्रारूप फ़ाइल

उदा परिभाषित करने की जरूरत लगता है

BULK INSERT TableA FROM 'C:\Temp\TableA.txt' 
WITH FORMATFILE = 'C:\Temp\Format.xml' 
SELECT * FROM TableA 

काम करने के लिए, हालांकि, आपको एक प्रारूप फ़ाइल की आवश्यकता है, जाहिर है।

सामान्य जानकारी के लिए यहाँ देखें एक बनाने के बारे में:

Creating a Format File

एक अनुमान में Schema में देखने से, कुछ इस तरह यह कर सकता है:

<?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="3"/> 
    <FIELD ID="2" xsi:type="CharFixed" LENGTH="3"/> 
</RECORD> 
<ROW> 
    <COLUMN SOURCE="1" NAME="Field1" xsi:type="SQLCHAR" LENGTH="3"/> 
    <COLUMN SOURCE="2" NAME="Field2" xsi:type="SQLCHAR" LENGTH="3"/> 
</ROW> 
</BCPFORMAT> 
+0

आह, ठीक। धन्यवाद! मैंने अभी सीखा है कि मुझे थोक सम्मिलन का उपयोग करने की कोशिश करते समय यह मिलता है: संदेश 4834, स्तर 16, राज्य 4, रेखा 1 आपके पास थोक लोड कथन का उपयोग करने की अनुमति नहीं है। –

+1

क्या आपको प्रारूप फ़ाइल के चारों ओर ब्रैकेट की आवश्यकता नहीं है? के साथ (FORMATFILE = 'सी: \ Temp \ Format.xml') –

3

आप अपने BULK INSERT के साथ format file का उपयोग करना चाहते हैं। कुछ की तरह:

9.0 
2 
1  SQLCHAR  0  03  ""   1  Field1   "" 
2  SQLCHAR  0  03  "\r\n"  2  Field2   "" 
संबंधित मुद्दे