MySQL import csv file ERROR 13 (HY000): No se puede obtener la estadística de /path/file.csv (Errcode: 2)

16

Soy un principiante absoluto en MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `

He creado una base de datos simple con una tabla. Al intentar importar datos a través de un archivo 'data_test.csv, aparece un mensaje de error 13.

El ejercicio de la Terminal sigue:

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> 

Nota: si usa LOCAL en LOAD DATA LOCAL INFILE aparece un error: ERROR 1148 (42000): el comando utilizado no está permitido con esta versión de MySQL

Guillermo
fuente

Respuestas:

26

Espero que lo estés usando LOAD DATA INFILE.

Intenta usar en LOAD DATA LOCAL INFILElugar de LOAD DATA INFILE.

Otro problema podría ser este, visite los siguientes enlaces: MySQL LOAD DATA.

Cuando inicie sesión en MySQL, haga lo siguiente:

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;

Ahora cargue su CSV usando LOAD DATA LOCAL INFILE, necesitamos usarlo --local-infileantes de cargar CSVen nuevas versiones de MySQL, por razones de seguridad.

Abdul Manaf
fuente
3

Aunque la respuesta anterior resolvió el problema para el OP, creo que debería contribuir con respecto a cómo resolví el mismo problema. El error 13 es causado por permisos de archivo incorrectos o insuficientes. En mi caso, esto se redujo a SELinux. Si está utilizando SELinux, la solución para agregar la ruta del archivo de datos a los directorios permitidos para MySQL se puede encontrar en esta respuesta: /programming//a/3971632/1449160

Sam_Butler
fuente
2

MySQL requiere que el archivo CSV esté en un directorio al que pueda acceder.

Mover su archivo de "/ home / stockrecdb /" a "/ tmp" también puede resolver el problema.

Cerveza cerveza
fuente
1

Recibí este mensaje de error exacto Error 13 (HY000)que se resolvió con la LOCALopción sugerida por Abdul Manaf. Sin embargo, me quedé atascado con un archivo CSV de tamaño 101GB. Al intentar importar este archivo CSV, el sistema informó una advertencia de BAJO espacio en disco y la tarea de importación no estaba terminando. Frustrantemente, el df -hcomando de herramientas Gui de la utilidad de disco incluso mostró que a mi directorio raíz le quedaban más de 85GB de espacio en disco.

Luego aprendí que la LOCALopción copia el archivo CSV en un lugar temporal en el directorio raíz /. Luego se lee del archivo temporal. Dado que mi archivo CSV de 101 GB era más grande que el espacio vacío que quedaba en mi raíz / estaba viendo la advertencia de disco bajo, sin embargo, esto no se detectó en muchas herramientas basadas en comandos y GUI, excepto en el monitor del sistema que reconocí más tarde. Como estoy trabajando en una base de datos MySQL de más de 300 GB, tuve que mover el directorio de datos MySQL a otro disco interno y estaba importando el CSV desde un disco duro externo. Copiar el archivo CSV de 101GB en el directorio de datos MySQL en el disco interno me permitió ejecutar el LOAD DATA INFILEcomando sin ningún mensaje de error.

Por lo tanto, tenga en cuenta la LOCALopción para archivos CSV más grandes que el espacio libre de su directorio raíz. La opción LOCAL tampoco es una buena idea para la resistencia del SSD.

Narnia_Optimus
fuente