मैं CSV फ़ाइल को MySQL तालिका में कैसे आयात करूं?


306

मेरे पास एक ग्राहक से एक अप्राकृतिक घटना-डायरी सीएसवी है जिसे मैं एक MySQL तालिका में लोड करने की कोशिश कर रहा हूं ताकि मैं एक समझदार प्रारूप में रिफ्लेक्टर कर सकूं। मैंने 'CSVImport' नामक एक टेबल बनाई जिसमें CSV फ़ाइल के हर कॉलम के लिए एक फ़ील्ड है। CSV में 99 कॉलम हैं, इसलिए यह अपने आप में एक कठिन कार्य था:

CREATE TABLE 'CSVImport' (id INT);
ALTER TABLE CSVImport ADD COLUMN Title VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN Company VARCHAR(256);
ALTER TABLE CSVImport ADD COLUMN NumTickets VARCHAR(256);
...
ALTER TABLE CSVImport Date49 ADD COLUMN Date49 VARCHAR(256);
ALTER TABLE CSVImport Date50 ADD COLUMN Date50 VARCHAR(256);

तालिका में कोई बाधा नहीं है, और सभी फ़ील्ड VARCHAR (256) मान रखते हैं, उन कॉलमों को छोड़कर, जिनमें गणना (INT द्वारा प्रतिनिधित्व), हां / नहीं (BIT द्वारा प्रतिनिधित्व), मूल्य (DECIMAL द्वारा प्रतिनिधित्व), और पाठ धब्बा ( TEXT द्वारा प्रस्तुत)।

मैंने फ़ाइल में डेटा लोड करने की कोशिश की:

LOAD DATA INFILE '/home/paul/clientdata.csv' INTO TABLE CSVImport;
Query OK, 2023 rows affected, 65535 warnings (0.08 sec)
Records: 2023  Deleted: 0  Skipped: 0  Warnings: 198256
SELECT * FROM CSVImport;
| NULL             | NULL        | NULL           | NULL | NULL               | 
...

पूरी मेज भर जाती है NULL

मुझे लगता है कि समस्या यह है कि टेक्स्ट ब्लब्स में एक से अधिक लाइन हैं, और MySQL फाइल को पार्स कर रहा है जैसे कि प्रत्येक नई लाइन एक डेटाबेस पंक्ति के अनुरूप होगी। मैं एक समस्या के बिना OpenOffice में फ़ाइल लोड कर सकता हूं।

Clientdata.csv फ़ाइल में 2593 लाइनें और 570 रिकॉर्ड हैं। पहली पंक्ति में कॉलम नाम शामिल हैं। मुझे लगता है कि यह अल्पविराम सीमांकित है, और पाठ जाहिरा तौर पर doublequote के साथ सीमांकित है।

अपडेट करें:

जब संदेह हो, तो मैनुअल पढ़ें: http://dev.mysql.com/doc/refman/5.0/en/load-data.html

मैंने इस LOAD DATAकथन में कुछ जानकारी जोड़ी थी कि ओपनऑफ़िस का अनुमान लगाने के लिए पर्याप्त स्मार्ट था, और अब यह सही संख्या में रिकॉर्ड लोड करता है:

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

लेकिन अभी भी पूरी तरह से बहुत सारे NULLरिकॉर्ड हैं, और जो भी डेटा लोड किया गया है वह सही जगह नहीं है।


17
और अगर आप OSX सीक्वल प्रो पर हैं, तो एक भयानक आयात उपकरण है और यह मुफ़्त है ;-)
मेरिक

41
यह मेरे लिए आश्चर्यजनक है कि मूल पोस्टर ने किसी और की तुलना में अपने स्वयं के प्रश्न का बेहतर उत्तर दिया ... मुझे नहीं पता कि इतने सारे लोग सॉफ़्टवेयर की सिफारिशें देने के लिए इतने तैयार क्यों हैं जब एक मौजूदा एसक्यूएल कमांड है, जो यूआई के बजाय प्रोग्रामेटिक हो सकता है आधारित। मैं किसी और के बारे में नहीं जानता, लेकिन मेरे लिए प्रोग्रामेटिक का मतलब है कि मैं टाइमस्टैम्प पर ऑटो-आयात फ़ाइलों के लिए स्क्रिप्ट सेट कर सकता हूं, जबकि यूआई-आधारित पूरी तरह से मैनुअल है।
क्रिस क्रेफ़िस

@ क्रिसहाइरफाइस: मुझे लगता है कि स्वीकृत उत्तर बताता है कि अच्छी तरह से। उन्हें 'लोड डेटा' कमांड को मैन्युअल रूप से बनाने में कुछ मदद की ज़रूरत थी, जो एक ग्राफिकल प्रोग्राम के साथ मदद कर सकता है। एक बार जब ग्राफिकल प्रोग्राम ने 'लोड डेटा' कमांड बनाया था, तब वह इसे प्रोग्रामेटिक रूप से पुन: उपयोग कर सकता था।
एलेक्स सीपी

@Merrick ने इस पर
ओसेक्स

मैंने एक्सेल में एक सिंटैक्स जनरेटर टूल के साथ सीएसवी डेटा को mysql में लोड करने के लिए व्यापक ट्यूटोरियल लिखा ।
mysql_user

जवाबों:


133

आपकी समस्या का मूल तालिका में उन लोगों के लिए CSV फ़ाइल में कॉलम से मेल खाता हुआ प्रतीत होता है।

कई चित्रमय mySQL ग्राहकों को इस तरह की चीजों के लिए बहुत अच्छे आयात संवाद हैं।

नौकरी के लिए मेरा पसंदीदा विंडोज आधारित HeidiSQL है । यह आपको LOAD DATAकमांड बनाने के लिए एक ग्राफिकल इंटरफ़ेस देता है ; आप इसे बाद में प्रोग्रामेटिक रूप से उपयोग कर सकते हैं।

आयात पाठ

स्क्रीनशॉट: "टेक्स्ट टेक्स्ट आयात करें" संवाद

आयात टेक्स्टफ़ाइल "संवाद खोलने के लिए, यहां जाएं Tools > Import CSV file:

यहां छवि विवरण दर्ज करें


25
मैक ओएसएक्स के लिए, सीक्वल प्रो का उपयोग करें।
एजी हैमरथिफ़

3
मैंने अभी इसकी कोशिश की और मुझे कॉलम नाम का उपयोग करने के बजाय पहले तालिका बनाने की आवश्यकता है।
डॉमिनिक

3
आपको जारी रखने से पहले एक तालिका का चयन करना होगा ... और चूंकि पूरे बिंदु तालिका बनाने के लिए नहीं है ...
डॉमिनिक

3
ध्यान दें कि लिनक्स में, HeidiSQL वाइन के तहत बहुत अच्छी तरह से काम करता है।
एलेजांद्रोव

1
@ उत्तर का बहुत ही महत्वपूर्ण बिंदु यह है कि GUI उपकरण मिलान आयात स्तंभों को तालिका स्तंभों के लिए आसान बना सकते हैं।
पक्के

191

डेटाबेस में एक तालिका लोड करने के लिए mysqlimport का उपयोग करें :

mysqlimport --ignore-lines=1 \
            --fields-terminated-by=, \
            --local -u root \
            -p Database \
             TableName.csv

मुझे यह मिल गया http://chriseiffel.com/everything-linux/how-to-import-a-large-csv-file-to-mysql/

सीमांकक को टैब बनाने के लिए, उपयोग करें --fields-terminated-by='\t'


6
mysqlimportLOAD DATA INFILE...पर्दे के पीछे का उपयोग करता है , इसलिए यह बहुत ही समान है।
म्लादेन जेबलानोविक

8
जैसा LOAD DATA INFILEकि आप उपयोग करने से पहले एक तालिका बनाने की जरूरत है mysqlimport
मार्कस डाउनिंग

@ MladenJablanović, यह निश्चित रूप से एक ही बात नहीं है। 1bil पंक्तियों को आयात करने का प्रयास करें। आप आश्चर्यचकित होंगे कि प्रदर्शन के मामले में यह कितना बड़ा अंतर है
ninjabber

@ninjabber डॉक्स का कहना है कि mysqlimport क्लाइंट LOAD DATA INFILE को एक कमांड-लाइन इंटरफ़ेस प्रदान करता है , इसलिए किसी भी प्रदर्शन लाभ की पेशकश करना सैद्धांतिक रूप से असंभव है LOAD DATA INFILE
म्लादेन जबलानोविक

1
भी जरूरत है --fields-optionally-enclosed-by=\"और `--fields-भाग निकले-दर = \`
chaintng

80

सबसे सरल तरीका जो मैंने 200+ पंक्तियों को आयात किया है वह phpmyadmin sql विंडो में कमांड के नीचे है

मेरे पास देश का एक साधारण टेबल है जिसमें दो कॉलम हैं CountryId, CountryName

यहाँ .csv डेटा हैCSV फ़ाइल

यहाँ आदेश है:

LOAD DATA INFILE 'c:/country.csv' 
INTO TABLE country 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS

एक बात का ध्यान रखें, कभी भी दूसरे कॉलम में न दिखें, अन्यथा आपका आयात बंद हो जाएगा


1
TSV फ़ाइलों के मामले में ',' -> 't', '' '->' और यदि कोई हेडर नहीं है तो आखिरी निकाल दें (आशा है कि क्रॉलर्स इंडेक्स को खोजें)
ब्लीडिंग फिंगर्स

16
यदि यह एक स्थानीय फ़ाइल है, तो आपको इसकी आवश्यकता हो सकती है LOAD DATA LOCAL INFILE। यदि यह त्रुटि 1148 "उपयोग की गई कमांड की अनुमति नहीं है" फेंकता है, तो आप इसके साथ कमांड लाइन पर mysql चलाकर सक्षम कर सकते हैं --local-infile
बिग मैक्लेरजैग

मुझे त्रुटि मिली: ERROR 1045 (28000): उपयोगकर्ता '' उपयोगकर्ता ''% '' (पासवर्ड का उपयोग करते हुए: YES)
ARUNBALAN NV

आपको व्यवस्थापक पैनल से, तब स्क्रिप्ट आयात करने का प्रयास करते हुए, उपयोगकर्ता तक सभी पहुंच प्रदान करनी होगी।
डेयरडेविल

1
मुझे यह त्रुटि मिल रही है: MySQL सर्वर --secure-file-private ऑप्शन के साथ चल रहा है, इसलिए यह इस कथन को निष्पादित नहीं कर सकता है
अग्निश्वर बख्शी

66

मुझे पता है कि सवाल पुराना है , लेकिन मैं करना चाहते हैं का हिस्सा इस

मैंने इस विधि का उपयोग 0.046sec में 100K से अधिक रिकॉर्ड ( ~ 5MB ) आयात करने के लिए किया

यहाँ आप इसे कैसे करते हैं:

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

अंतिम पंक्ति को शामिल करना बहुत महत्वपूर्ण है, यदि आपके पास एक से अधिक फ़ील्ड हैं अर्थात सामान्य रूप से यह अंतिम फ़ील्ड को छोड़ देता है (MySQL 5.6.13)

LINES TERMINATED BY '\n'
(field_1,field_2 , field_3);

फिर, यह मानते हुए कि आपके पास अपने खेतों के लिए शीर्षक के रूप में पहली पंक्ति है , आप इस पंक्ति को भी शामिल करना चाह सकते हैं

IGNORE 1 ROWS

यदि आपकी फ़ाइल में शीर्ष लेख पंक्ति है तो यह ऐसा दिखता है।

LOAD DATA LOCAL INFILE  
'c:/temp/some-file.csv'
INTO TABLE your_awesome_table  
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(field_1,field_2 , field_3);

मैंने 16k पंक्तियों और 48 स्तंभों को आयात किया। धन्यवाद मित्र।
रेनजिथ वीआर

यह सबसे अच्छा उपाय है। किसी को भी यह जानने की उत्सुकता है कि यह कितनी तेजी से है: मैंने 14 सेकेंड में $ 20 / मो AWS लाइटसैल उदाहरण में 3.2 मिलियन पंक्तियों को आयात किया, ऑनबोर्ड MySQL सर्वर (उच्च प्रदर्शन आरडीएस नहीं) के साथ। बहुत बढ़िया!
मास्टर_ग्रेसी

इस पंक्ति में, (field_1,field_2 , field_3);यह एक .csv फ़ाइल या किसी तालिका में स्तंभों की सूची को संदर्भित करता है? अर्थात, ये क्षेत्र क्या हैं?
tera_789

@ tera_789 आपकी सीएसवी फ़ाइल में जो शायद आपकी तालिका से मेल खाएगी
फहद

डेटा प्रारूप का पालन करना चाहिए। उदाहरण (मेरे मामले के लिए) <pre> first_name, last_name, dob, phone_number, email, name, lastName, 12-05-2018,54545, faiz @ gmail.com, name1, lastName1.2018-05-12,456, faiz1 @ gmail1 .com, name2, lastName2,2018-05-12,456, faiz2 @ gmail.com, name3, lastName3,2018-05-22,456, faiz3 @ gmail.com, name4, lastName4,1988-05-22,456, faiz4 @ gmail.com , name5, lastName5,1988-05-22,456, faiz5 @ gmail.com, name6, lastName6,1987-05-21,456, faiz6 @ gmail.com </ pre>
फ़ैज़ अहमद

32

phpMyAdmin CSV आयात को संभाल सकता है। यहाँ कदम हैं:

  1. CSV फ़ाइल को उसी क्रम में फ़ील्ड के लिए तैयार करें जैसे MySQL टेबल फ़ील्ड।

  2. CSV से शीर्ष पंक्ति को निकालें (यदि कोई हो), ताकि फ़ाइल में केवल डेटा हो।

  3. PhpMyAdmin इंटरफ़ेस पर जाएं।

  4. बाएं मेनू में तालिका का चयन करें।

  5. शीर्ष पर आयात बटन पर क्लिक करें।

  6. CSV फ़ाइल में ब्राउज़ करें।

  7. विकल्प का चयन करें "लोड डेटा का उपयोग करके सीएसवी"।

  8. दर्ज करें "," द्वारा समाप्त "फ़ील्ड" में।

  9. डेटाबेस तालिका में उसी क्रम में कॉलम नाम दर्ज करें।

  10. जाओ बटन पर क्लिक करें और आप कर रहे हैं।

यह एक नोट है जिसे मैंने अपने भविष्य के उपयोग के लिए तैयार किया है, और अगर किसी और को फायदा हो सकता है तो यहां साझा करना चाहिए।


यह अच्छा और सरल है। मैं एसक्यूएल के माध्यम से टेबल और कॉलम बनाना पसंद करता हूं (इसलिए मैं चरण # 9 को छोड़ता हूं) और सीएसवी आयात करके डेटा सम्मिलित करता हूं। NULLकिसी भी ऑटो-इन्क्रिमिंग फ़ील्ड / कॉलम के लिए CSV में सेट करना न भूलें ।
सिल्वर

ध्यान दें कि phpMyAdmin बुरी तरह से विफल हो जाता है जब सिरिलिक वर्ण सीएसवी फ़ाइल में शामिल किए जाते हैं, कोई फर्क नहीं पड़ता कि आप इसे utf-8 का उपयोग करने के लिए कहें।
फ्रेंक मारजोआ

यदि आप बड़ी CSV फ़ाइल आयात कर रहे हैं तो आयात आकार बदलना न भूलें। BTW अपनी बड़ी CSV फ़ाइलों के लिए एक अच्छा विकल्प नहीं है।
एवीआई

वेब क्लाइंट के लिए .csv फ़ाइल को पहले डाउनलोड करने की आवश्यकता होती है क्योंकि आप स्थानीय सीएसवी फ़ाइल में ब्राउज़ नहीं कर सकते।
mckenzm

हां, आप कर सकते हैं, आपको 'स्थानीय कीवर्ड' चिह्नित चेकबॉक्स की जांच करने की आवश्यकता है और आप एक स्थानीय सीएसवी फ़ाइल का उपयोग कर सकते हैं
chsisfs

12

आप इसे LOAD DATA स्टेटमेंट में कॉलम सूचीबद्ध करके ठीक कर सकते हैं। से मैनुअल :

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,...);

... तो आपके मामले में आपको उस क्रम में 99 कॉलम सूचीबद्ध करने की आवश्यकता है जिसमें वे सीएसवी फ़ाइल में दिखाई देते हैं।


8

यह कोशिश करो, यह मेरे लिए काम किया

    LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS;

IGNORE 1 ROWS यहां पहली पंक्ति को नजरअंदाज करता है जिसमें फ़ील्डनाम होते हैं। ध्यान दें कि फ़ाइल नाम के लिए आपको फ़ाइल का पूर्ण पथ टाइप करना होगा।


यह सबसे अच्छा जवाब है। जब एक एकल SQL कमांड करेगा तो दूसरे उपकरण का उपयोग क्यों करें ?
sdgfsdh

Do- u जानते हैं कि जब सर्वर पर चल रहे फ़ाइल को mysql में लोड करने की कोशिश में यह काम कैसे किया जाता है? यह मुझे फ़ाइल (पासवर्ड) के लिए अस्वीकृत होने के लिए कहता है। सीएसवी फ़ाइल स्थान का पासवर्ड कहाँ दर्ज करें?
बकावतारा

7

Mysql कमांड लाइन आयात पर बहुत अधिक समस्याओं के लिए प्रवण है। इसे कैसे करना है इसके बारे में यहां बताया गया है:

  • कोई स्थान नहीं है हेडर नामों को संपादित करने के लिए एक्सेल का उपयोग करें
  • .csv के रूप में सहेजें
  • आयात और ऑटो एक नई तालिका बनाने (इसे एक नाम दें) के लिए नि: शुल्क Navicat Lite Sql ब्राउज़र का उपयोग करें
  • आईडी के लिए एक प्राथमिक ऑटो नंबर कॉलम डालें नई तालिका खोलें
  • कॉलम के प्रकार को इच्छानुसार बदलें।
  • किया हुआ!

5

यदि आप MySQL कार्यक्षेत्र (वर्तमान में 6.3 संस्करण) का उपयोग कर रहे हैं, तो आप इसके द्वारा कर सकते हैं:

  1. "टेबल्स" पर राइट क्लिक करें;
  2. तालिका तालिका डेटा आयात विज़ार्ड;
  3. अपनी सीएसवी फ़ाइल को चुन लें और निर्देशों का पालन करें (JSON भी इस्तेमाल किया जा सकता है); अच्छी बात यह है कि आप एक मौजूदा तालिका में डेटा आयात या लोड करना चाहते हैं जिस पर सीएसवी फ़ाइल के आधार पर आप एक नई तालिका बना सकते हैं

यहां छवि विवरण दर्ज करें


+1। मैंने इसका इस्तेमाल किया क्योंकि mysql ने मुझे त्रुटियों के लिए रखा LOAD DATA INFILEऔर mysqlimport("mysql के इस संस्करण पर समर्थित नहीं है")
clmno

यह तरीका काम करता है, लेकिन यह एक तरह से धीमा है। मैंने सोचा होगा कि इस सुविधा का उपयोग करके एक बड़े पैमाने पर INSERTक्वेरी का निर्माण किया जाएगा और इसे एक ही बार में करने की कोशिश की जाएगी, लेकिन ऐसा लगता है कि ऐसा करना वास्तव में INSERTप्रति पंक्ति एक बार चलता है ।
डेवियन मैंशन

4

मुझे कुछ अजीब सा दिख रहा है। आप उसी पात्र के लिए उपयोग कर रहे हैं जिसे आप एन्क्लोसिंग के लिए उपयोग करते हैं। इसलिए इंजन यह नहीं जानता कि जब वह '' '' पाया जाता है तो मुझे क्या करना है और मुझे लगता है कि इसीलिए कुछ भी सही जगह नहीं लगता है। मुझे लगता है कि अगर आप ESCAPING की लाइन को हटा देते हैं, तो आपको शानदार रन करना चाहिए।

LOAD DATA INFILE "/home/paul/clientdata.csv"
INTO TABLE CSVImport
COLUMNS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

जब तक आप अपने सीएसवी का विश्लेषण (मैन्युअल रूप से, नेत्रहीन, ...) करते हैं और पाते हैं कि भागने के लिए कौन सा चरित्र उपयोग करता है। कभी-कभी '\' होता है। लेकिन अगर आपके पास यह नहीं है, तो इसका उपयोग न करें।


3

फिर भी एक और उपाय अद्भुत csvkit से csvsql टूल का उपयोग करना है सुइट ।

उपयोग उदाहरण:

csvsql --db mysql://$user:$password@localhost/$database --insert --tables $tablename  $file

यह उपकरण स्वचालित रूप से डेटा प्रकारों (डिफ़ॉल्ट व्यवहार) का अनुमान लगा सकता है, तालिका बना सकता है और डेटा को बनाई गई तालिका में सम्मिलित कर सकता है। --overwriteविकल्प का उपयोग तालिका को गिराने के लिए किया जा सकता है यदि यह पहले से मौजूद है।--insertविकल्प - फाइल से टेबल को पॉप्युलेट करने के लिए।

सुइट स्थापित करने के लिए

pip install csvkit

आवश्यक शर्तें: python-dev , libmysqlclient-dev,MySQL-python

apt-get install python-dev libmysqlclient-dev
pip install MySQL-python

3

सीएसएल फ़ाइलों को एसक्यूएल टेबल में कैसे आयात करें

उदाहरण फ़ाइल: Overseas_trade_indexडेटा CSV फ़ाइल

कदम:

  1. के लिए तालिका बनाने की आवश्यकता है overseas_trade_index

  2. सीएसवी फ़ाइल से संबंधित कॉलम बनाने की आवश्यकता है।

    SQL क्वेरी:

    ( id int not null primary key auto_increment,
    series_reference varchar (60),
    period varchar (60),
    data_value decimal(60,0),
    status varchar (60),
    units varchar (60),
    magnitude int(60),
    subject text(60),
    group text(60),
    series_title_1 varchar (60),
    series_title_2 varchar (60),
    series_title_3 varchar (60),
    series_title_4 varchar (60),
    series_title_5 varchar (60),
     );
  3. टर्मिनल में mysql डेटाबेस कनेक्ट करने की आवश्यकता है।

    =>show databases;
    =>use database;
    =>show tables;
  4. कृपया mysql टेबल पर csv डेटा आयात करने के लिए इस कमांड को दर्ज करें।

    load data infile '/home/desktop/Documents/overseas.csv' into table trade_index fields terminated by ',' lines terminated by '\n' (series_reference,period,data_value,status,units,magnitude,subject,series_title1,series_title_2,series_title_3,series_title_4,series_title_5);
  5. Sqldatabase पर यह विदेशी व्यापार सूचकांक डेटा प्राप्त करें:

    select * from trade_index;

2

यदि आप एक्सेल स्प्रेडशीट भरी हुई के साथ एक विंडोज़ मशीन का उपयोग कर रहे हैं, तो एक्सेल में नया mySql प्लगइन अभूतपूर्व है। ओरेकल के लोगों ने वास्तव में उस सॉफ्टवेयर पर अच्छा काम किया। आप एक्सेल से सीधे डेटाबेस कनेक्शन बना सकते हैं। वह प्लगइन आपके डेटा का विश्लेषण करेगा, और डेटा के अनुरूप प्रारूप में आपके लिए तालिकाओं को सेट करेगा। मेरे पास डेटा की कुछ बड़ी बड़ी सीएसवी फाइलें थीं। यह उपकरण एक बड़ा समय बचाने वाला था।

http://dev.mysql.com/downloads/windows/excel/

आप एक्सेल के भीतर से अपडेट कर सकते हैं जो ऑनलाइन डेटाबेस को पॉप्युलेट करेगा। यह अति सस्ती GoDaddy साझा होस्टिंग पर बनाई गई mySql फ़ाइलों के साथ बहुत अच्छी तरह से काम किया। (ध्यान दें कि जब आप GoDaddy पर तालिका बनाते हैं, तो आपको डेटाबेस की साइट एक्सेस को सक्षम करने के लिए कुछ ऑफ-स्टैंडर्ड सेटिंग्स का चयन करना होगा ...)

इस प्लगइन के साथ आप अपने एक्सएल स्प्रेडशीट और ऑनलाइन mySql डेटा भंडारण के बीच शुद्ध अन्तरक्रियाशीलता है।


2

मैं एक ही काम करने के लिए mysql कार्यक्षेत्र का उपयोग करता हूं।

  1. नया स्कीमा बनाएं
  2. नव निर्मित स्कीमा खोलें
  3. "टेबल्स" पर राइट क्लिक करें और "टेबल डेटा आयात विज़ार्ड" चुनें
  4. csv फ़ाइल पथ और तालिका नाम दें और अंत में अपने कॉलम प्रकार को कॉन्फ़िगर करें क्योंकि विज़ार्ड उनके मूल्यों के आधार पर डिफ़ॉल्ट कॉलम प्रकार सेट करता है।

नोट: "पूंछ -f [mysqlworkbenchpath] /log/wb*.log" का उपयोग करके किसी भी त्रुटि के लिए mysql कार्यक्षेत्र की लॉग फ़ाइल पर एक नज़र डालें


आपके उत्तर के लिए बहुत बहुत धन्यवाद - MySQL के लिए नया होने के नाते मुझे इस बारे में पता नहीं था - इसने मुझे CSV के साथ मदद की। अब, मुझे एक्सेस से 10 तालिकाओं को आयात करने की भी आवश्यकता है - क्या आपको लगता है कि इन तालिकाओं को एक्सेल से एक्सेल से सीएसवी में निर्यात करने का सबसे सरल तरीका होगा और फिर इन चरणों का उपयोग करना होगा?
नाओमी

मैंने पाया कि यह विधि सभी पंक्तियों को आयात नहीं करती है :( 5,342 पंक्तियों में से यह केवल मेरे लिए 2,485 पंक्तियों को आयात करती है। ऐसा क्यों?
नाओमी

अरे नाओमी, अगर आप mysqlworkbench लॉग की जाँच करते हैं तो यह आपको दिखाएगा कि उसने डेटा आयात करना क्यों बंद कर दिया। आपकी DB और CSV फ़ाइल में कुछ अशक्त मान या बेमेल प्रकार हो सकते हैं। लेकिन मैं जुआन के जवाब (मेरे ठीक बाद) का पालन करने की अत्यधिक सलाह देता हूं। उसका समाधान मुझसे बेहतर और साफ-सुथरा है।
मेहदी

1

यहाँ नमूना एक्सेल फ़ाइल स्क्रीन शॉट है:

यहां छवि विवरण दर्ज करें

के रूप में सहेजें और चुनें .csv।

और यदि आप नोटपैड ++ या किसी अन्य नोटपैड का उपयोग करके खोलते हैं, तो आपको नीचे दिखाया गया होगा .csv डेटा स्क्रीन शॉट।

यहां छवि विवरण दर्ज करें

सुनिश्चित करें कि आपने हेडर को हटा दिया है और mysql तालिका में .csv में कॉलम संरेखण है। अपने फ़ोल्डर नाम से folder_name बदलें

लोड डेटा स्थानीय इनवॉइस
'डी: /folder_name/myfilename.csv' 'इनटबल मेल मेल से संबंधित', (fname, lname, ईमेल, फोन);

यदि बड़ा डेटा है, तो आप कॉफी ले सकते हैं और इसे लोड कर सकते हैं!

आप सभी की जरूरत है



0

PHP Query के लिए csv फ़ाइल को mysql डेटाबेस में आयात करें

$query = <<<EOF
            LOAD DATA LOCAL INFILE '$file'
             INTO TABLE users
             FIELDS TERMINATED BY ','
             LINES TERMINATED BY '\n'
             IGNORE 1 LINES
            (name,mobile,email)
    EOF;
if (!$result = mysqli_query($this->db, $query))
   {
        exit(mysqli_error($this->db));
   }

** नमूना CSV फ़ाइल डेटा **

name,mobile,email
Christopher Gritton,570-686-3439,ChristopherKGritton@inbound.plus
Brandon Wilson,541-309-5149,BrandonMWilson@inbound.plus
Craig White,516-795-8065,CraigJWhite@inbound.plus
David Whitney,713-214-3966,DavidCWhitney@inbound.plus

0

सर्वरनाम, उपयोगकर्ता नाम, पासवर्ड, dbname, अपनी फ़ाइल का पथ, टैबलेनैम और वह फ़ील्ड बदलें जो आपके डेटाबेस में है जिसे आप सम्मिलित करना चाहते हैं

<?php
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "bd_dashboard";
    //For create connection
    $conn = new mysqli($servername, $username, $password, $dbname);

    $query = "LOAD DATA LOCAL INFILE 
                'C:/Users/lenovo/Desktop/my_data.csv'
                INTO TABLE test_tab
                FIELDS TERMINATED BY ','
                LINES TERMINATED BY '\n'
                IGNORE 1 LINES
                (name,mob)";
    if (!$result = mysqli_query($conn, $query)){
        echo '<script>alert("Oops... Some Error occured.");</script>';
        exit();
            //exit(mysqli_error());
       }else{
        echo '<script>alert("Data Inserted Successfully.");</script>'
       }
    ?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.