2012-10-24 17 views
14

के लिए थोक लोड डेटा रूपांतरण त्रुटि (निर्दिष्ट कोडपृष्ठ के लिए मिलान मिलान या अवैध वर्ण टाइप करें) जब मैं अपने डेटाबेस में एक टेक्स्ट फ़ाइल आयात करने का प्रयास करता हूं तो मुझे रूपांतरण त्रुटि मिल रही है। नीचे मुझे प्राप्त त्रुटि संदेश है:पंक्ति 1, कॉलम 4 (वर्ष)

पंक्ति 1, कॉलम 4 (वर्ष) के लिए थोक लोड डेटा रूपांतरण त्रुटि (निर्दिष्ट कोडपृष्ठ के लिए मिलान या अमान्य वर्ण टाइप करें)।

100,Christoph,Van Gerwen,2011 
101,Anar,Cooke,2011 
102,Douglis,Rudinow,2008 

मुझे लगता है कि मुझे पता है कि समस्या is..Below मेरी बल्क डालने कोड है:

CREATE TABLE Students 
(
    StudentNo Integer NOT NULL Primary Key, 
    FirstName VARCHAR(40) NOT NULL, 
    LastName  VARCHAR(40) NOT NULL, 
    Year   Integer, 
    GPA   Float NULL 
); 

यहाँ पाठ फ़ाइल से नमूना डेटा है:

यहाँ मेरी क्वेरी कोड है:

use xta9354 
bulk insert xta9354.dbo.Students 
from 'd:\userdata\xta9_Students.txt' 
with (fieldterminator = ',',rowterminator = '\n') 

नमूना डेटा के साथ, यद्यपि वहाँ अभी भी एक और विशेषता है Gra कोई ',' वर्ष भी विशेषता के बाद डी वर्ष के बाद जो पूर्ण

क्या कोई मुझे बता सकता है कि इसे कैसे ठीक किया जाए?

+1

ऐसा प्रतीत होता है कि आप 5 कॉलम तालिका में 4 कॉलम डालने वाले हैं। क्या आप एक प्रारूप फ़ाइल का उपयोग कर रहे हैं? स्वरूपण के आधार पर, यह आपकी लाइन के अंत में अतिरिक्त ASCII वर्णों का पता लगा सकता है। – Kermit

उत्तर

19

format file का उपयोग करने का प्रयास करें क्योंकि आपकी डेटा फ़ाइल में केवल 4 कॉलम हैं। अन्यथा, OPENROWSET आज़माएं या स्टेजिंग टेबल का उपयोग करें।

9.0 
4 
1  SQLINT  0  3  ","  1  StudentNo  "" 
2  SQLCHAR  0  100  ","  2  FirstName  SQL_Latin1_General_CP1_CI_AS 
3  SQLCHAR  0  100  ","  3  LastName  SQL_Latin1_General_CP1_CI_AS 
4  SQLINT  0  4  "\r\n" 4  Year   "

http://i.msdn.microsoft.com/dynimg/IC45684.gif

This tutorialBULK INSERT के साथ एक कॉलम भी मदद मिल सकती लंघन पर:

myTestFormatFiles.Fmt की तरह लग सकता है।

अपने बयान तो देखो की तरह होगा:

USE xta9354 
GO 
BULK INSERT xta9354.dbo.Students 
    FROM 'd:\userdata\xta9_Students.txt' 
    WITH (FORMATFILE = 'C:\myTestFormatFiles.Fmt') 
4

मेरे मामले में, मैं एक फ़ाइल है कि एक linux बॉक्स पर Hadoop द्वारा उत्पन्न की गई के साथ काम कर रहा था। जब मैंने एसक्यूएल में आयात करने की कोशिश की तो मुझे यह मुद्दा था। 'लाइन फीड' 0x0a के लिए हेक्स मान का उपयोग करने के लिए फिक्स घायल हो गया है। यह थोक डालने के लिए भी काम करता है

bulk insert table from 'file' 
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '0x0a') 
संबंधित मुद्दे