Plik CSV importu MySQL BŁĄD 13 (HY000): Nie można uzyskać statystyki pliku /path/file.csv (Errcode: 2)

16

Jestem absolutnym początkującym do MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `

Stworzyłem prostą bazę danych z jedną tabelą. Podczas próby zaimportowania do niego danych za pomocą pliku „data_test.csv pojawia się komunikat o błędzie 13.

Wyjdź z terminalu w następujący sposób:

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> 

Uwaga: jeśli używasz LOCAL w LOAD DATA LOCAL INFILE, pojawia się błąd: ERROR 1148 (42000): Użyta komenda nie jest dozwolona w tej wersji MySQL

Guillermo
źródło

Odpowiedzi:

26

Mam nadzieję, że używasz LOAD DATA INFILE.

Spróbuj użyć LOAD DATA LOCAL INFILEzamiast LOAD DATA INFILE.

Innym problemem może być ten, proszę odwiedzić następujące linki: MySQL LOAD DATA.

Gdy logujesz się w MySQL, postępuj jak poniżej,

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;

Teraz załaduj plik CSV LOAD DATA LOCAL INFILE, musimy go użyć, --local-infilezanim załadujemy CSVnowe wersje MySQL ze względów bezpieczeństwa.

Abdul Manaf
źródło
3

Chociaż powyższa odpowiedź rozwiązała problem PO, wydaje mi się, że powinienem przyczynić się do rozwiązania tego samego problemu. Błąd 13 jest spowodowany niepoprawnymi lub niewystarczającymi uprawnieniami do plików. W moim przypadku było to zależne od SELinuksa. Jeśli używasz SELinux, poprawkę dodawania ścieżki pliku danych do dozwolonych katalogów MySQL można znaleźć w tej odpowiedzi: /programming//a/3971632/1449160

Sam_Butler
źródło
2

MySQL wymaga, aby plik CSV znajdował się w katalogu, do którego ma dostęp.

Przenieś plik z „/ home / stockrecdb /” do „/ tmp” może również rozwiązać problem.

Piwo Polor
źródło
1

Miałem dokładnie ten komunikat o błędzie, Error 13 (HY000)który został rozwiązany za pomocą LOCALopcji sugerowanej przez Abdula Manafa. Jednak utknąłem z plikiem CSV o rozmiarze 101 GB. Podczas próby zaimportowania tego pliku CSV system zgłosił ostrzeżenie o NISKIM miejscu na dysku, a zadanie importowania nie kończyło się. Frustrujące jest to, że polecenie narzędzia Gui narzędzia dyskowego df -hpokazało nawet , że w moim katalogu głównym pozostało ponad 85 GB miejsca na dysku.

Potem dowiedziałem się, że LOCALopcja kopiuje plik CSV do tymczasowego miejsca w katalogu głównym /. Następnie czyta z pliku tymczasowego. Ponieważ mój plik CSV o wielkości 101 GB był większy niż puste miejsce w moim katalogu głównym / widziałem ostrzeżenie o niskim dysku, jednak nie zostało to wykryte w wielu GUI i narzędziach opartych na poleceniach, z wyjątkiem monitora systemu, który rozpoznałem później. Ponieważ pracuję nad bazą danych MySQL o pojemności przekraczającej 300 GB, musiałem przenieść katalog danych MySQL na inny dysk wewnętrzny i importowałem CSV z zewnętrznego dysku twardego. Skopiowanie pliku CSV 101 GB do katalogu danych MySQL na dysku wewnętrznym pozwoliło mi uruchomić LOAD DATA INFILEpolecenie bez żadnego komunikatu o błędzie.

Należy więc pamiętać o LOCALopcji dla większych plików CSV większych niż wolne miejsce w katalogu głównym. Opcja LOKALNA również nie jest dobrym pomysłem na wytrzymałość SSD.

Narnia_Optimus
źródło