2010-08-12 13 views
53

Ho guardato dappertutto e non ho trovato alcuna soluzione, qualsiasi aiuto su questo sarebbe fantastico.mysql caricamento dati infile impossibile ottenere stat del file Errcode: 2

Query:

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 
) 

Errore:

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

NOTA:

Io corro MySQL Query Browser su OSX 10.6.4 connessione a MySQL 5.x

Cose che ho provato:

  • drag-n-drop
  • chmod 777
  • Mettere in una cartella con 777 permessi così come il file con 777 permessi
+0

controllare il forum di MySQL. Ecco un solo link: http://forums.mysql.com/read.php?10,228976,228976#msg-228976 – spinon

+0

@spinon ha provato questo, non funziona. Mi dà lo stesso percorso di file che ho. Ho rimosso quello che avevo e trascino e trascino il file dentro. Mi dà lo stesso percorso. Quando eseguo mi dà lo stesso errore –

+1

Sembra anche che il file potrebbe non esistere: http://www.electrictoolbox.com/article/mysql/mysqlimport-errors/ Cerca errcode: 2 nella pagina – spinon

risposta

101

tenta di utilizzare LOAD DATA LOCAL INFILE invece di LOAD DATA INFILE

altro verificare se apparmor è attivo per la directory

+0

provato, ma ora ricevo un errore SQL: si ha un errore nella sintassi SQL; controlla il manuale che corrisponde alla tua versione del server MySQL per la sintassi corretta da usare vicino a "LOCAL DATA INFILE" /Users/name/Desktop/loadIntoDb/loadIntoDB.csv " INT" alla riga 1 –

+6

è LOAD DATA LOCAL INFILE poiché tu guidi io lungo la strada giusta. Risposta accettata –

+0

ah, sì, scusate la risposta perfetta – Pierre

9

Ho avuto un problema simile. La risoluzione era un brutto scherzo, ma molto più facile da ricordare rispetto alle soluzioni alternative per gli apparmori, purché si potesse "sudo". In primo luogo, ho dovuto mettere il file di input nella sotto-directory per il database mysql usavo:

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

Questo fa una copia e se ne va 'root' come il proprietario del file. Dopo essere entrato in mysql e facendo un USE mydatabasename, sono stato in grado di riempire la tabella appropriata utilizzando

LOAD DATA INFILE 'mytabdelimitedtextfile.txt' INTO TABLE mytablename; 
+1

Per chi potrebbe trovare questo utile, questa è la soluzione che ha funzionato per me invece della risposta accettata.Sono su Ubuntu 12.04 LTS e MySQL 5.5.35-0ubuntu0.12.04.1 –

+1

Allo stesso modo, sono stato in grado di aggirare questo su Ubuntu 12.04, mysql 5.5.31 cambiando l'utente del mio file: group a mysql: mysql – user18477575

1

Per me, la copia il contenuto di/tmp e l'utilizzo come la cartella di origine ha fatto il trucco. Io uso MariaDB e la mia versione non consente l'utilizzo del modificatore "LOCAL". È interessante notare che anche l'accesso in lettura e scrittura alla cartella CSV non ha funzionato.

0

Ho avuto lo stesso problema mentre compilavo una tabella in mysql su un'istanza AWS.

Nel mio caso ho avuto il file csv nell'istanza stessa.

Mettere il percorso Assoluto ha risolto il mio problema.

Ecco la linea da MySQL documentazione

If LOCAL is specified, the file is read by the client program on the client host and sent to the server. The file can be given as a full path name to specify its exact location. If given as a relative path name, the name is interpreted relative to the directory in which the client program was started.

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

Problemi correlati