मेरे पास एक CSV फ़ाइल है जिसमें 10 कॉलम हैं। मैं उस फ़ाइल से केवल कुछ कॉलम चुनना चाहता हूं और उन्हें LOAD DATA INFILE
कमांड का उपयोग करके एक MySQL डेटाबेस में लोड करना चाहता हूं ।
जवाबों:
MySQL की तालिका में डेटा लोड करें और कॉलम निर्दिष्ट करें:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;
@ col1,2,3,4 सीएसवी फ़ाइल कॉलम (मान 4) नाम रखने के लिए चर हैं, आईडी टेबल कॉलम हैं।
for i in range(1,100): print("@column",i,",",end="",sep="")
LOAD DATA INFILE 'file.csv'
INTO TABLE t1
(column1, @dummy, column2, @dummy, column3, ...)
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\r\n';
बस अपने कॉलम नामों के साथ कॉलम 1, कॉलम 2, आदि को बदलें और @ डमी को उस स्थान पर रखें जहां सीएसवी में एक कॉलम है जिसे आप अनदेखा करना चाहते हैं।
पूरी जानकारी यहाँ ।
(field,names)
काम करने के लिए अंत में अर्धविराम से ठीक पहले रखना होगा ।
लोड डेटा इनफाइल स्टेटमेंट में CSV में कॉलम का नाम निर्दिष्ट करें।
कोड इस प्रकार है:
LOAD DATA INFILE '/path/filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(column_name3, column_name5);
यहां आप केवल दो कॉलम में डेटा जोड़ने के साथ जाते हैं (आप उन्हें कॉलम के नाम के साथ चुन सकते हैं)।
केवल एक चीज जो आपको ध्यान रखनी है वह यह है कि आपके पास एक CSV फ़ाइल (फ़ाइल नाम .csv) है जिसमें दो मान प्रति पंक्ति (पंक्ति) हैं। अन्यथा उल्लेख करें। मेरा एक अलग उपाय है।
धन्यवाद।
उदाहरण:
ae.csv फ़ाइल की सामग्री:
"Date, xpto 14"
"code","number","year","C"
"blab","15885","2016","Y"
"aeea","15883","1982","E"
"xpto","15884","1986","B"
"jrgg","15885","1400","A"
CREATE TABLE Tabletmp (
rec VARCHAR(9)
);
केवल कॉलम 3 के लिए:
LOAD DATA INFILE '/local/ae.csv'
INTO TABLE Tabletmp
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@col1, @col2, @col3, @col4, @col5)
set rec = @col3;
select * from Tabletmp;
2016
1982
1986
1400
यदि आपके डेटाबेस टेबल में स्तंभों की संख्या आपके सीएसवी में स्तंभों की संख्या से अधिक है, तो आप इस तरह आगे बढ़ सकते हैं:
LOAD DATA LOCAL INFILE 'pathOfFile.csv'
INTO TABLE youTable
CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
(yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);
निम्नलिखित त्रुटि वाले लोगों के लिए:
त्रुटि कोड: 1290. MySQL सर्वर --secure-file-private विकल्प के साथ चल रहा है, इसलिए यह इस कथन को निष्पादित नहीं कर सकता है
आप इस आदेश को केवल यह देखने के लिए चला सकते हैं कि कौन सी फ़ोल्डर फ़ाइलों को लोड कर सकती है:
SHOW VARIABLES LIKE "secure_file_priv";
उसके बाद, आपको उस फ़ोल्डर में फ़ाइलों को कॉपी करना होगा और LOAD DATA LOCAL INFILE
इसके बजाय क्वेरी को चलाना होगा LOAD DATA INFILE
।
ERROR 1148 (42000): The used command is not allowed with this MySQL version
:।