web-dev-qa-db-fra.com

mysql load data infile ne peut pas obtenir la statistique du fichier Errcode: 2

J'ai regardé partout et n'ai trouvé aucune solution, toute aide à ce sujet serait formidable.

Question:

LOAD DATA INFILE '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' 
INTO TABLE `tba`.`tbl_name` 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(
field1, field2, field3
)

Erreur:

Can't get stat of '/Users/name/Desktop/loadIntoDb/loadIntoDB.csv' (Errcode:2)

REMARQUE:

J'utilise le navigateur MySQL Query sur OSX 10.6.4 en se connectant à MySQL 5.x

Choses que j'ai essayées:

  • Glisser-déposer
  • Chmod 777
  • Mettez dans un dossier avec 777 permissions ainsi que le fichier avec 777 Permissions
60
Phill Pafford

essayez d'utiliser LOAD DATA LOCAL INFILE au lieu de LOAD DATA INFILE 

sinon vérifier si apparmor est actif pour votre répertoire

117
Pierre

J'avais un problème similaire. La résolution était un bidouillage légèrement laid, mais beaucoup plus facile à retenir que les solutions de contournement d’apparmor à condition que vous puissiez «Sudo». Tout d'abord, je devais mettre le fichier d'entrée dans le sous-répertoire mysql pour la base de données que j'utilisais:

Sudo cp myfile.txt /var/lib/mysql/mydatabasename

Cela crée une copie et laisse 'root' en tant que propriétaire du fichier. Après être entré dans mysql et faire un USE mydatabasename, j’ai pu renseigner la table appropriée en utilisant

LOAD DATA INFILE 'mytabdelimitedtextfile.txt' INTO TABLE mytablename;
9
user2788525

Utiliser le paramètre --local aidera à cela.

Exemple: mysqlimport --local databasename fichier.txt -p

source: http://dev.mysql.com/doc/refman/5.1/en/load-data.html "L'option --local amène mysqlimport à lire les fichiers de données du client Hôte"

2
Zodzie

Pour moi, copier le contenu dans/tmp et utiliser celui-ci comme dossier source a permis de résoudre le problème . J'utilise MariaDB, et ma version ne permet pas d'utiliser le modificateur "LOCAL" . dans le dossier CSV ne fonctionnait pas non plus.

1
jciloa

J'ai eu le même problème en remplissant une table dans mysql sur une instance AWS.

Dans mon cas, j'avais le fichier csv dans l'instance même.

Mettre le chemin absolu a résolu mon problème.

Voici la ligne de la documentation MySQL

Si LOCAL est spécifié, le fichier est lu par le programme client sur l'hôte client et envoyé au serveur. Le fichier peut être donné en tant que chemin complet pour spécifier son emplacement exact. S'il est donné sous forme de nom de chemin relatif, le nom est interprété par rapport au répertoire dans lequel le programme client a été démarré.

http://dev.mysql.com/doc/refman/5.7/en/load-data.html

0
Akash Rudra