MySQL імпортує CSV-файл ПОМИЛКА 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> 

Примітка: якщо використовується LOCAL у LOAD DATA LOCAL INFILE, з’являється помилка: 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;

Тепер завантажте свій CSV за допомогою LOAD DATA LOCAL INFILE, який нам потрібно використовувати, --local-infileперш ніж завантажувати CSVнові сервіси MySQL з міркувань безпеки.


3

Хоча вищевказана відповідь вирішила проблему для ОП, я вважаю, що я повинен зробити свій внесок у те, як я вирішив ту саму проблему. Помилка 13 спричинена неправильними або недостатніми правами файлів. У моєму випадку це було до SELinux. Якщо ви використовуєте SELinux, виправлення для додавання шляху вашого файлу даних до дозволених каталогів для MySQL можна знайти у цій відповіді: /programming//a/3971632/1449160


2

MySQL вимагає, щоб файл CSV знаходився в каталозі, до якого він може отримати доступ.

Переміщення файлу з "/ home / stockrecdb /" в "/ tmp" також може вирішити проблему.


1

У мене було саме таке повідомлення про помилку, Error 13 (HY000)яке було вирішено за допомогою LOCALпараметра, запропонованого Абдулом Манафом. Однак я застряг у файлі CSV розміром 101 Гб. Під час спроби імпорту цього CSV-файлу система повідомила про низьке дискове попередження про пробіг, і завдання імпорту не закінчується. Розчарувально, дискова утиліта Gui tools навіть df -hкоманда показала, що в моєму кореневому каталозі залишилось більше 85 Гб дискового простору.

Тоді я дізнався, що LOCALопція копіює файл CSV у тимчасове місце в корені / каталозі. Потім він читається з тимчасового файлу. Оскільки мій файл CSV об'ємом 101 ГБ був більшим за порожнє місце, залишене у моєму корені / я бачив попередження про низький диск, однак цього не було виявлено у багатьох графічних інтерфейсах та інструментах, за винятком системного монітора, який я пізнав пізніше. Оскільки я працюю над базою даних MySQL об'ємом понад 300 ГБ, мені довелося перемістити каталог даних MySQL на інший внутрішній диск, і я імпортував CSV з зовнішнього жорсткого диска. Копіювання файлу CSV 101 ГБ у каталог даних MySQL на внутрішній диск дозволило мені запустити LOAD DATA INFILEкоманду без повідомлення про помилку.

Тож пам’ятайте про LOCALможливість для великих файлів CSV, більших за вільний простір кореневої директорії. Варіант LOCAL також не є хорошою ідеєю для витривалості SSD.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.