webentwicklung-frage-antwort-db.com.de

mysql load data infile kann den Status der Datei nicht ermitteln. Errcode: 2

Ich habe überall nachgesehen und keine Lösung gefunden, jede Hilfe wäre großartig.

Abfrage:

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
)

Error:

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

HINWEIS:

Ich verwende den MySQL Query-Browser unter OSX 10.6.4 und verbinde mich mit MySQL 5.x

Dinge, die ich ausprobiert habe:

  • Ziehen und loslassen
  • Chmod 777
  • Legen Sie einen Ordner mit 777 Berechtigungen an ebenso wie die Datei mit 777 Berechtigungen
60
Phill Pafford

versuchen Sie, LOAD DATA LOCAL INFILE anstelle von LOAD DATA INFILE zu verwenden. 

Überprüfen Sie andernfalls, ob apparmor für Ihr Verzeichnis aktiv ist

117
Pierre

Ich hatte ein ähnliches Problem. Die Auflösung war ein leicht hässlicher Hack, aber viel einfacher zu merken als Appar-Workarounds, vorausgesetzt, Sie können "Sudo". Zuerst musste ich die Eingabedatei in das Mysql-Unterverzeichnis für die Datenbank legen, die ich verwendete:

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

Dies führt zu einer Kopie und belässt 'root' als Dateieigentümer. Nach dem Einstieg in mysql und einem USE mydatabasename konnte ich die entsprechende Tabelle mit füllen

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

Die Verwendung des Parameters --local hilft dabei.

Beispiel: mysqlimport --local databasename file.txt -p

source: http://dev.mysql.com/doc/refman/5.1/de/load-data.html "Durch die Option --local werden von mysqlimport Datendateien vom Client gelesen Wirt"

2
Zodzie

Das Kopieren von Inhalten nach/tmp und das Verwenden des Quellordners hat für mich den Trick bewirkt. Ich benutze MariaDB, und meine Version erlaubt nicht die Verwendung des Moduls "LOCAL" zum CSV-Ordner funktionierte auch nicht.

1
jciloa

Ich hatte das gleiche Problem beim Auffüllen einer Tabelle in Mysql auf einer AWS-Instanz.

In meinem Fall hatte ich die CSV-Datei in der Instanz selbst.

Das Setzen des absoluten Pfades löste mein Problem.

Hier ist die Zeile aus der MySQL-Dokumentation

Wenn LOCAL angegeben ist, wird die Datei vom Client-Programm auf dem Client-Host gelesen und an den Server gesendet. Die Datei kann als vollständiger Pfadname angegeben werden, um den genauen Speicherort anzugeben. Wenn ein relativer Pfadname angegeben wird, wird der Name relativ zu dem Verzeichnis interpretiert, in dem das Client-Programm gestartet wurde.

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

0
Akash Rudra