MySQL import csv file ERROR 13 (HY000): impossibile ottenere stat di /path/file.csv (Errcode: 2)


16

Sono un principiante assoluto di MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) `

Ho creato un database semplice con una tabella. Quando si tenta di importare dati al suo interno tramite un file 'data_test.csv, viene visualizzato un messaggio di errore 13.

Esegui dal terminale segue:

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: se si utilizza LOCAL in LOAD DATA LOCAL INFILE appare un errore: ERRORE 1148 (42000): il comando utilizzato non è consentito con questa versione di MySQL

Risposte:


26

Spero tu stia usando LOAD DATA INFILE.

Prova a usare LOAD DATA LOCAL INFILEinvece di LOAD DATA INFILE.

Altro problema potrebbe essere questo, visitare i seguenti collegamenti: MySQL LOAD DATA.

Quando accedi a MySQL, fai come di seguito,

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;

Ora carica il tuo CSV usando LOAD DATA LOCAL INFILE, dobbiamo usarlo --local-infileprima di caricare CSVin nuove versioni MySQL, per motivi di sicurezza.


3

Sebbene la risposta di cui sopra abbia risolto il problema per il PO, ritengo di dover contribuire a come ho risolto lo stesso problema. L'errore 13 è causato da autorizzazioni di file errate o insufficienti. Nel mio caso, ciò dipendeva da SELinux. Se si utilizza SELinux, la correzione per l'aggiunta del percorso del file di dati alle directory consentite per MySQL è disponibile in questa risposta: /programming//a/3971632/1449160


2

MySQL richiede che il file CSV si trovi in ​​una directory a cui può accedere.

Spostare il file da "/ home / stockrecdb /" a "/ tmp" potrebbe anche risolvere il problema.


1

Ho ricevuto questo messaggio di errore esatto Error 13 (HY000)che è stato risolto utilizzando l' LOCALopzione suggerita da Abdul Manaf. Tuttavia, mi sono bloccato con un file CSV di dimensioni 101 GB. Durante il tentativo di importare questo file CSV, il sistema ha segnalato LOW Disk Space Warning e l'attività di importazione non stava finendo. Frustrantemente, l'utilità Gui degli strumenti del disco ha persino df -hmostrato che la mia directory principale aveva più di 85 GB di spazio su disco.

Poi ho imparato che l' LOCALopzione copia il file CSV in un posto temporaneo nella directory root /. Quindi legge dal file temporaneo. Dato che il mio file CSV di 101 GB era più grande dello spazio vuoto rimasto sulla mia radice / stavo vedendo l'avvertimento del disco basso, tuttavia, questo non è stato rilevato in molti strumenti basati su GUI e basati su comandi tranne il monitor di sistema che ho riconosciuto in seguito. Dato che sto lavorando su un database MySQL di oltre 300 GB, ho dovuto spostare la directory dei dati MySQL su un altro disco interno e importavo il CSV da un disco rigido esterno. La copia del file CSV da 101 GB nella directory dei dati MySQL nel disco interno mi consente di eseguire il LOAD DATA INFILEcomando senza alcun messaggio di errore.

Quindi LOCALfai attenzione all'opzione per file CSV di dimensioni maggiori rispetto allo spazio libero della directory principale. L'opzione LOCAL non è una buona idea per la resistenza di SSD.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.