मैं एक फ़ाइल लोड करने की कोशिश कर रहा हूं जहां सभी पंक्तियां समान नियमों का उपयोग करती हैं। (एक पंक्ति मान हैडर है)MySQL: उपयोगकर्ता चर में फिक्स्ड-पंक्ति प्रारूप के साथ डेटा कैसे लोड करें
HEADER1
HEADER2
.......
लेकिन unluckily जब मैं डेटा लोड INFILE बयान का उपयोग करने के लिए मैं इस त्रुटि मिलती है कोशिश: त्रुटि कोड: 1409 निश्चित आकार के साथ फ़ाइल से मूल्य लोड नहीं कर सकता परिवर्तनीय पर पंक्तियां।
इस कोड मैंने लिखा है:
USE test;
DROP TABLE IF EXISTS EXAMPLE_H;
CREATE TABLE EXAMPLE_H(
ID CHAR(20),
SP CHAR(3),
IVA CHAR(11) PRIMARY KEY,
NLP CHAR(6),
DLP DATE,
DUVI DATE,
DELP CHAR(30),
FILLER CHAR(39),
VTLP CHAR(3),
FILL CHAR(49)
);
LOAD DATA INFILE 'BTILSP.TXT'
INTO TABLE test.EXAMPLE_H
FIELDS TERMINATED BY ''
LINES TERMINATED BY '\n'
(ID, SP, IVA, NLP, @var_date_one, @var_date_two, DELP, FILLER, VTLP, FILL)
SET DLP = str_to_date(@var_date_one, '%Y%m%d',
DUVI = str_to_date(@var_date_two, '%Y%m%d');
मैं इस विचार (Ramam Pullella द्वारा टिप्पणी) this page के नीचे पढ़ने था, और मैं एक ही कुछ वेबसाइटों पर समझाया पाया है, लेकिन मैं नहीं समझ सकता मुझे यह त्रुटि क्यों मिल रही है।
यदि मैं @var_date_one और @var_date_two चर का उपयोग नहीं करता हूं, और इसलिए STR_TO_DATE फ़ंक्शन, दिनांक को MySQL आवश्यकता के रूप में प्रस्तुत नहीं किया जाता है - फ़ाइल में दिनांक "20100701" जैसा कुछ है - तब वह फ़ील्ड होगा मैं जो अपेक्षा कर रहा हूं उससे ज़्यादा शून्य या अलग तिथि शामिल है। यदि मैं CHAR (8) द्वारा प्रतिनिधित्व करने के लिए डीएलपी और डीयूवीआई को बदलता हूं, तो यह काम करता है, लेकिन मैं SQL DATE तुलना और समान टूल का उपयोग नहीं करूंगा।
क्या आप कृपया मेरी मदद कर सकते हैं? :) बहुत बहुत धन्यवाद।
संपादित करें:
ऐसा लगता है समस्या, लाइन द्वारा '' समाप्त द्वारा दिया जाता है के बाद से लाइन इस तरह का एक "स्थिर पंक्ति (undelimited)" है। हो सकता है कि इसे किसी अज्ञात कारण के लिए चर के लिए असाइन नहीं किया जा सके, लेकिन यह इस तरह से काम करता है। प्रलेखन कहते हैं:
User variables cannot be used when loading data with fixed-row format because user variables do not have a display width.
कोई भी सुझाव?
पुन: संपादित करें: मैंने उस पृष्ठ के नीचे रयान नेव द्वारा टिप्पणी पढ़ी है। वह चर में पंक्तियों को निश्चित करने के लिए एक चाल देता है:
LOAD DATA LOCAL INFILE '<file name>' INTO TABLE <table>
(@var1)
SET Date=str_to_date(SUBSTR(@var1,3,10),'%m/%d/%Y'),
Time=SUBSTR(@var1,14,8),
WindVelocity=SUBSTR(@var1,26,5),
WindDirection=SUBSTR(@var1,33,3),
WindCompass=SUBSTR(@var1,38,3),
WindNorth=SUBSTR(@var1,43,6),
WindEast=SUBSTR(@var1,51,6),
WindSamples=SUBSTR(@var1,61,4);
क्या आपको लगता है कि यह करने का एक अच्छा तरीका है? :)
डॉक्स में यह ठीक-लंबाई प्रारूप डेटा के लिए काम नहीं करेगा उल्लेख किया है। सबसे अच्छा, अपनी डालने फ़ाइल को फिर से प्रस्तुत करना है। या इसे वर्चर में बदलें, और बाद में एक प्रकार का कास्टिंग करें। – ajreal
@ajreal: धन्यवाद! कल मैंने आपका जवाब नहीं पढ़ा, लेकिन मैंने अपना प्रश्न संपादित किया और मैंने जो कुछ कहा वह मैंने लिखा :) – Markon