MySQL इम्पोर्ट सीएसवी फाइल ERROR 13 (HY000): /path/file.csv (एर्रोड: 2) की प्रतिमा प्राप्त नहीं कर सकता


16

मैं MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `के लिए एक पूर्ण शुरुआत हूँ

मैंने एक तालिका के साथ एक सरल डेटाबेस बनाया है। 'Data_test.csv फ़ाइल के माध्यम से डेटा आयात करने का प्रयास करते समय त्रुटि संदेश 13 प्रकट होता है।

टर्मिनल से छूट इस प्रकार है:

mysql> source /home/g/stockrecdb/load_test.sql;
Database changed
ERROR 13 (HY000): Can't get stat of '/home/stockrecdb/data_test.csv' (Errcode: 2)
mysql> 

ध्यान दें: यदि LOAD DATA LOCAL INFILE में LOCAL का उपयोग किया जाता है तो एक त्रुटि दिखाई देती है: ERROR 1148 (42000): इस MySQL संस्करण के साथ प्रयुक्त कमांड की अनुमति नहीं है

जवाबों:


26

मुझे आशा है कि आप उपयोग कर रहे हैं LOAD DATA INFILE

के LOAD DATA LOCAL INFILEबजाय उपयोग करने का प्रयास करें LOAD DATA INFILE

अन्य समस्या यह हो सकती है, कृपया निम्नलिखित लिंक पर जाएँ: MySQL LOAD DATA।

जब आप MySQL में लॉगिन करते हैं तो नीचे की तरह,

abdul@xmpp3:~/Desktop/Jiva$ mysql -uroot -p --local-infile
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 257
Server version: 5.5.29-0ubuntu0.12.04.1-log (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mydb;


mysql> LOAD DATA LOCAL INFILE '/home/abdul/Desktop/STATISTIC_T.csv' INTO TABLE STATISTIC_T  FIELDS TERMINATED BY '|' ENCLOSED BY '"' LINES TERMINATED BY '\n'  IGNORE 1 LINES;

अब सुरक्षा कारणों से नए MySQL vesrsions में लोड LOAD DATA LOCAL INFILEकरने --local-infileसे पहले हमें अपने CSV का उपयोग करके लोड CSVकरना होगा।


3

यद्यपि उपरोक्त उत्तर ने ओपी के लिए समस्या हल कर दी है, मुझे लगता है कि मुझे उसी समस्या को हल करने में योगदान देना चाहिए। त्रुटि 13 गलत या अपर्याप्त फ़ाइल अनुमतियों के कारण है। मेरे मामले में यह SELinux के नीचे था। यदि आप SELinux का उपयोग कर रहे हैं, तो MySQL के लिए अनुमत निर्देशिकाओं में अपने डेटा फ़ाइल पथ को जोड़ने का निर्धारण इस उत्तर में पाया जा सकता है: /programming//a/3971632/1449160


2

MySQL के लिए CSV फ़ाइल को एक निर्देशिका में होना आवश्यक है जो इसे एक्सेस कर सकती है।

अपनी फ़ाइल को "/ home / stockrecdb /" से "/ tmp" में ले जाएं, इससे समस्या का समाधान भी हो सकता है।


1

मेरे पास यह सटीक त्रुटि संदेश Error 13 (HY000)था LOCALजिसे अब्दुल मनाफ द्वारा सुझाए गए विकल्प का उपयोग करके हल किया गया था । हालाँकि, मैं 101GB आकार की CSV फ़ाइल के साथ फंस गया। इस CSV फ़ाइल को आयात करने का प्रयास करते समय, सिस्टम ने LOW डिस्क स्पेस वार्निंग की सूचना दी और आयात कार्य समाप्त नहीं हुआ। निराशा की बात यह है कि डिस्क उपयोगिता गुई उपकरण यहां तक ​​कि df -hकमांड ने दिखाया कि मेरी रूट निर्देशिका में 85GB से अधिक डिस्क स्थान बचा था।

तब मुझे पता चला कि LOCALविकल्प CSV फ़ाइल को रूट / निर्देशिका में एक अस्थायी स्थान पर कॉपी करता है। फिर यह अस्थायी फ़ाइल से पढ़ता है। चूँकि 101GB की मेरी CSV फ़ाइल मेरे रूट पर छोड़ी गई खाली जगह से बड़ी थी / मुझे कम डिस्क चेतावनी दिखाई दे रही थी, हालाँकि, सिस्टम मॉनिटर के अलावा कई GUI और कमांड-आधारित टूल में इसका पता नहीं चला था जिन्हें मैंने बाद में मान्यता दी थी। चूंकि मैं 300GB से अधिक के MySQL डेटाबेस पर काम कर रहा हूं, इसलिए मुझे MySQL डेटा निर्देशिका को किसी अन्य आंतरिक डिस्क पर ले जाना पड़ा और मैं एक बाहरी हार्ड डिस्क से CSV आयात कर रहा था। 101GB CSV फ़ाइल को आंतरिक डिस्क में MySQL डेटा निर्देशिका में कॉपी करते हुए मुझे LOAD DATA INFILEबिना किसी त्रुटि संदेश के कमांड चलाने दें।

तो LOCALअपने रूट डायरेक्टरी के खाली स्थान से अधिक बड़ी CSV फ़ाइलों के विकल्प के बारे में जानकारी रखें । LOCAL विकल्प भी SSD के धीरज के लिए एक अच्छा विचार नहीं है।

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