2009-11-01 16 views
11

वाली फ़ाइल लोड हो रहा था, मैं "लोड डेटा स्थानीय इन्फाइल" फ़ाइल नाम 'इंटो टेबल' टैबलेटनाम 'का उपयोग करके mysql तालिका में डेटा फ़ाइल लोड करने का प्रयास कर रहा था।MySQL लोड डेटा INFILE - कोई प्राथमिक कुंजी

समस्या यह है कि स्रोत डेटा फ़ाइल में प्रत्येक फ़ील्ड का डेटा होता है लेकिन प्राथमिक कुंजी गुम होती है ('आईडी' कॉलम)। मुझे स्रोत डेटा फ़ाइल की प्रत्येक पंक्ति में एक अद्वितीय आईडी जोड़नी है अन्यथा आयात नहीं होगा।

क्या स्रोत फ़ाइल में प्राथमिक कुंजी को अनदेखा करने या आयात के दौरान ऑटो को बढ़ाने का कोई विकल्प है?

यह पहले ही ऑटो-वृद्धि प्राथमिक कुंजी पर सेट हो चुका है।

mysql> desc tablename; 
+--------------------+--------------+------+-----+---------+----------------+ 
| Field    | Type   | Null | Key | Default | Extra   | 
+--------------------+--------------+------+-----+---------+----------------+ 
| id     | int(11)  | NO | PRI | NULL | auto_increment | 
... 

उत्तर

13

एक तालिका में लोड क्यों न करें जिसमें स्वत: वृद्धि प्राथमिक कुंजी है?

create table MyTable (
    id integer auto_increment primary key, 
    ... 
) 

आप स्तंभ है कि तालिका नाम के बाद आयात किया जाएगा निर्दिष्ट कर सकते हैं:

LOAD DATA INFILE 'filename' INTO TABLE tablename (col1,col2,...); 

आप आईडी स्तंभ निर्दिष्ट नहीं करते हैं, MySQL यह फ़ाइल से पढ़ने नहीं होंगे।

+0

तालिका बनाते समय इसे पहले ही ऑटो-वृद्धि प्राथमिक कुंजी पर सेट कर दिया गया है। – jack

+1

अच्छा, यह काम करता है। धन्यवाद। – jack

+3

नोट: कॉलम किसी भी फ़ील्ड/लाइन/कॉलम टर्मिनेटर/घोषणा घोषणाओं के बाद आना चाहिए। –

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