MySQL LOAD DATA स्टेटमेंट फ़ाइल से मानों को स्थिति के अनुसार लोड करता है , नाम से नहीं।
MySQL को फ़ील्ड के "नाम" (.csv फ़ाइल में हेडर लाइन से) किसी भी कॉलम नाम "मिलान" के बारे में कोई आवश्यकता नहीं है। (यह संभव है कि आपके सिस्टम के किसी अन्य घटक में उस प्रकार की आवश्यकता हो, लेकिन MySQL LOAD DATA में ऐसा नहीं है।)
यह एक .csv फ़ाइल के लिए मान्य है जिसमें हेडर लाइन नहीं है। जब कोई हेडर लाइन होती है, तो हम आमतौर पर IGNORE 1 LINES
का उपयोग करके इसे "स्किप ओवर" करते हैं। ।
इसके अलावा, मैं FIELDS
. कीवर्ड का उपयोग करना पसंद करता हूं COLUMNS
. के स्थान पर LOAD DATA विवरण में ।
MySQL में, बैकटिक वर्णों का उपयोग करके पहचानकर्ता (कॉलम नाम, तालिका नाम) से बच सकते हैं। किसी ऐसे पहचानकर्ता का उपयोग करने के लिए जिसमें अमान्य वर्ण शामिल हैं, जैसे रिक्त स्थान, पहचानकर्ता को अवश्य ही छोड़ देना चाहिए।
CREATE TABLE ...
...
`Rec Open Date` DATE NOT NULL COMMENT 'Rec Open Date',
^ ^
मेरे कीबोर्ड पर, बैकटिक ऊपरी बाईं ओर की कुंजी है ` ~ 1 के ठीक बाईं ओर! कुंजी।
ANSI_QUOTES
अगर sql_mode
वेरिएबल में ANSI_QUOTES
शामिल है , तो आप पहचानकर्ताओं से बचने के लिए दोहरे उद्धरण चिह्नों का भी उपयोग कर सकते हैं। उदा.
SHOW VARIABLES LIKE 'sql_mode' ;
SET sql_mode = 'ANSI_QUOTES,...' ;
SHOW VARIABLES LIKE 'sql_mode'
Variable_name Value
------------- -----------
sql_mode ANSI_QUOTES
फिर:
CREATE TABLE ...
...
"Rec Open Date" DATE NOT NULL COMMENT 'Rec Open Date',
^ ^
अगर sql_mode
नहीं करता है ANSI_QUOTES
शामिल करें (या तो स्पष्ट रूप से या किसी अन्य सेटिंग में शामिल), तो पहचानकर्ताओं के आसपास के दोहरे उद्धरण काम नहीं करते हैं। और पहचानकर्ताओं के आस-पास सिंगल कोट्स का उपयोग करना कभी भी काम नहीं करना चाहिए... सिंगल कोट्स में स्ट्रिंग लिटरल्स होते हैं।
टेकअवे:पहचानकर्ताओं (कॉलम नाम, टेबल नाम, आदि) से बचने के लिए बैकटिक वर्णों का उपयोग करें और स्ट्रिंग अक्षर के आसपास सिंगल कोट्स का उपयोग करें। ANSI_QUOTES सेट होने पर भी अपना SQL कोड काम करने के लिए स्ट्रिंग अक्षर के आसपास दोहरे उद्धरण चिह्नों का उपयोग करने से बचें।