Je suis un débutant absolu en MySQL (5.5.34)/Linux (Ubuntu 12.04 LTS) `
J'ai créé une base de données simple avec une table. Lorsque vous essayez d'importer des données dedans via un fichier 'data_test.csv, un message d'erreur 13 apparaît.
Exert from Terminal suit:
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>
Remarque: si vous utilisez LOCAL dans LOAD DATA LOCAL INFILE, une erreur apparaît: ERREUR 1148 (42000): La commande utilisée n'est pas autorisée avec cette version de MySQL
J'espère que vous utilisez LOAD DATA INFILE
.
Essayez d'utiliser LOAD DATA LOCAL INFILE
au lieu de LOAD DATA INFILE
.
Un autre problème peut être celui-ci, veuillez visiter les liens suivants: MySQL LOAD DATA.
Lorsque vous vous connectez à MySQL, faites comme ci-dessous,
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;
Maintenant, chargez votre CSV en utilisant LOAD DATA LOCAL INFILE
, nous devons utiliser --local-infile
avant de charger CSV
dans de nouvelles versions de MySQL, pour des raisons de sécurité.
MySQL nécessite que le fichier CSV se trouve dans un répertoire auquel il peut accéder.
Déplacer votre fichier de "/ home/stockrecdb /" vers "/ tmp" peut également résoudre le problème.
Bien que la réponse ci-dessus ait résolu le problème de l'OP, je pense que je devrais contribuer quant à la façon dont j'ai résolu le même problème. L'erreur 13 est due à des autorisations de fichier incorrectes ou insuffisantes. Dans mon cas, c'était dû à SELinux. Si vous utilisez SELinux, le correctif pour ajouter le chemin de votre fichier de données aux répertoires autorisés pour MySQL se trouve dans cette réponse: https://stackoverflow.com/a/3971632/144916
J'ai eu ce message d'erreur exact Error 13 (HY000)
qui a été résolu en utilisant l'option LOCAL
suggérée par Abdul Manaf. Cependant, je suis resté coincé avec un fichier CSV de taille 101 Go. Lors de l'importation de ce fichier CSV, le système a signalé un avertissement d'espace disque insuffisant et la tâche d'importation ne se terminait pas. Frustrant, l'utilitaire de disque Gui tools even df -h
A montré que mon répertoire racine avait plus de 85 Go d'espace disque.
J'ai ensuite appris que l'option LOCAL
copie le fichier CSV dans un emplacement temporaire dans le répertoire racine /. Il lit ensuite le fichier temporaire. Étant donné que mon fichier CSV de 101 Go était plus grand que l'espace vide laissé sur ma racine/je voyais l'avertissement de disque faible, cependant, cela n'a pas été détecté dans de nombreux outils basés sur l'interface graphique et les commandes, à l'exception du moniteur système que j'ai reconnu plus tard. Comme je travaille sur une base de données MySQL de plus de 300 Go, j'ai dû déplacer le répertoire de données MySQL vers un autre disque interne et j'importais le CSV depuis un disque dur externe. La copie du fichier CSV de 101 Go dans le répertoire de données MySQL du disque interne m'a permis d'exécuter la commande LOAD DATA INFILE
Sans aucun message d'erreur.
Soyez donc conscient de l'option LOCAL
pour les fichiers CSV plus volumineux que l'espace libre de votre répertoire racine. L'option LOCAL n'est pas non plus une bonne idée pour l'endurance des SSD.