web-dev-qa-db-ja.com

mysql load data infileはファイルErrcodeの統計を取得できません:2

私はすべてを見渡して解決策を見つけませんでしたが、これに関する助けは素晴らしいでしょう。

クエリ:

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
)

エラー:

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

注意:

MySQL 5.xに接続するOSX 10.6.4でMySQL Queryブラウザを実行しています

私が試したこと:

  • ドラッグアンドドロップ
  • Chmod 777
  • 777許可を持つフォルダーと777許可を持つファイルを入れる
62
Phill Pafford

LOAD DATA LOCAL INFILEの代わりにLOAD DATA INFILEを使用してみてください

そうでない場合は、ディレクトリで apparmor がアクティブかどうかを確認します

123
Pierre

同様の問題がありました。解決策はややugいハックでしたが、「Sudo」が可能な場合は、防具の回避策よりも覚えやすいです。まず、使用しているデータベースのmysqlサブディレクトリに入力ファイルを配置する必要がありました。

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

これはコピーを行い、「root」をファイル所有者のままにします。 mysqlに入ってUSE mydatabasenameを実行した後、次を使用して適切なテーブルを作成できました。

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

--localパラメーターを使用すると、これに役立ちます。

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

ソース: http://dev.mysql.com/doc/refman/5.1/en/load-data.html 「--localオプションにより、mysqlimportはクライアントホストからデータファイルを読み取ります」

2
Zodzie

私にとっては、内容を/ tmpにコピーし、それをソースフォルダーとして使用するのがうまくいきました。 MariaDBを使用していますが、私のバージョンでは「LOCAL」修飾子を使用できません。興味深いことに、CSVフォルダーへの読み取り/書き込みアクセス権の付与も機能しませんでした。

1
jciloa

AWSインスタンスでmysqlのテーブルにデータを入力するときに同じ問題が発生しました。

私の場合、インスタンス自体にcsvファイルがありました。

絶対パスを設定することで問題が解決しました。

MySQLドキュメントの行は次のとおりです。

LOCALが指定されている場合、ファイルはクライアントホスト上のクライアントプログラムによって読み取られ、サーバーに送信されます。ファイルは、正確な場所を指定するためのフルパス名として指定できます。相対パス名として指定された場合、その名前はクライアントプログラムが起動されたディレクトリを基準にして解釈されます。

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

0
Akash Rudra