LOAD DATA INFILE का उपयोग करके CSV फ़ाइल से MySQL डेटाबेस में चयनित कॉलम कैसे डालें


83

मेरे पास एक CSV फ़ाइल है जिसमें 10 कॉलम हैं। मैं उस फ़ाइल से केवल कुछ कॉलम चुनना चाहता हूं और उन्हें LOAD DATA INFILEकमांड का उपयोग करके एक MySQL डेटाबेस में लोड करना चाहता हूं ।

जवाबों:


118

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) नाम रखने के लिए चर हैं, आईडी टेबल कॉलम हैं।


2
मैं अपना उत्तर mysql में चलाता हूं और एक त्रुटि दिखाई देता है ERROR 1148 (42000): The used command is not allowed with this MySQL version:।
shgnInc


8
क्या होगा यदि मेरे पास 100 कॉलम हैं और मैं सिर्फ 2 कॉलम आयात करना चाहता हूं, तो क्या मुझे (@ col1, @ col2, ... @ col100) सेट नाम = @ col4, id- @ col2 लिखना चाहिए; या एक आसान तरीका है?
धर्म

@ धर्म ए अजगर 3 कार्यक्रम में 100 कॉलम नाम छापने के लिएfor i in range(1,100): print("@column",i,",",end="",sep="")
अगल विशाल

39
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, आदि को बदलें और @ डमी को उस स्थान पर रखें जहां सीएसवी में एक कॉलम है जिसे आप अनदेखा करना चाहते हैं।

पूरी जानकारी यहाँ


5
जब मुझे कुछ ऐसा लगता है तो मुझे एक सिंटैक्स त्रुटि मिलती है। मुझे (field,names)काम करने के लिए अंत में अर्धविराम से ठीक पहले रखना होगा ।
स्टीफन ओस्टरमिलर

1
जब तक आप सभी सीएसवी कॉलम को नहीं जानते, तब तक यह पैमाना नहीं है।
चार्ल्स हरमोन

4
F यह +38 वोट कैसे है? यह गलत SQL सिंटैक्स है।
जॉन

34

लोड डेटा इनफाइल स्टेटमेंट में 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) है जिसमें दो मान प्रति पंक्ति (पंक्ति) हैं। अन्यथा उल्लेख करें। मेरा एक अलग उपाय है।

धन्यवाद।


2
शायद दूसरे जवाब थोड़े पुराने हैं। इसने मेरे लिए MySQL 5.6
Fabio Napodano

फाइल में पूरा रास्ता डालने के लिए धन्यवाद। एक पल के लिए, मैं MySQL निर्देशिका खोज रहा था जिसमें मुझे csv फ़ाइल डालनी है!
श्रीनाथ

1
यह सबसे अच्छा काम करता है, हालांकि पथ को सुरक्षित सुरक्षित क्षेत्रों से होना चाहिए। इस कमांड को चलाएँ VARIABLES LIKE करें "Secure_file_priv"; और फिर इस स्थान पर सीएसवी फ़ाइल को छोड़ें
गणेश कृष्णन

1
@FabioNapodano से सहमत हैं। अपने v5.7 के लिए, मुझे कथन के अंत में कॉलम नाम रखने की आवश्यकता थी।
ऐनी गन

यह दुर्भाग्य से सवाल का जवाब नहीं देता है। इसके लिए .csv में दो कॉलम होने चाहिए, और उन्हें DB में दो विशेष कॉलमों में सम्मिलित करना होगा। पोस्टर 10 के csv से 2 कॉलम खींचने का अनुरोध कर रहा है
daprezjer

13

उदाहरण:

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

1
उदाहरण हमेशा बेहतर होते हैं
पियरे डे लेसिन

3

यदि आपके डेटाबेस टेबल में स्तंभों की संख्या आपके सीएसवी में स्तंभों की संख्या से अधिक है, तो आप इस तरह आगे बढ़ सकते हैं:

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,...);

0

निम्नलिखित त्रुटि वाले लोगों के लिए:

त्रुटि कोड: 1290. MySQL सर्वर --secure-file-private विकल्प के साथ चल रहा है, इसलिए यह इस कथन को निष्पादित नहीं कर सकता है

आप इस आदेश को केवल यह देखने के लिए चला सकते हैं कि कौन सी फ़ोल्डर फ़ाइलों को लोड कर सकती है:

SHOW VARIABLES LIKE "secure_file_priv";

उसके बाद, आपको उस फ़ोल्डर में फ़ाइलों को कॉपी करना होगा और LOAD DATA LOCAL INFILEइसके बजाय क्वेरी को चलाना होगा LOAD DATA INFILE

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.