CSV-файл импорта MySQL ОШИБКА 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 появляется ошибка: ОШИБКА 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

Sam_Butler
источник
2

MySQL требует, чтобы файл CSV находился в каталоге, к которому он имеет доступ.

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

Полор Пиво
источник
1

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

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

Так что помните о LOCALвозможности для больших файлов CSV больше, чем свободное пространство вашего корневого каталога. Локальная опция также не является хорошей идеей для выносливости SSD.

Narnia_Optimus
источник