私はすべてを見渡して解決策を見つけませんでしたが、これに関する助けは素晴らしいでしょう。
クエリ:
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ブラウザを実行しています
私が試したこと:
LOAD DATA LOCAL INFILE
の代わりにLOAD DATA INFILE
を使用してみてください
そうでない場合は、ディレクトリで apparmor がアクティブかどうかを確認します
同様の問題がありました。解決策はややugいハックでしたが、「Sudo」が可能な場合は、防具の回避策よりも覚えやすいです。まず、使用しているデータベースのmysqlサブディレクトリに入力ファイルを配置する必要がありました。
Sudo cp myfile.txt /var/lib/mysql/mydatabasename
これはコピーを行い、「root
」をファイル所有者のままにします。 mysqlに入ってUSE mydatabasename
を実行した後、次を使用して適切なテーブルを作成できました。
LOAD DATA INFILE 'mytabdelimitedtextfile.txt' INTO TABLE mytablename;
--localパラメーターを使用すると、これに役立ちます。
例:mysqlimport --local databasename file.txt -p
ソース: http://dev.mysql.com/doc/refman/5.1/en/load-data.html 「--localオプションにより、mysqlimportはクライアントホストからデータファイルを読み取ります」
私にとっては、内容を/ tmpにコピーし、それをソースフォルダーとして使用するのがうまくいきました。 MariaDBを使用していますが、私のバージョンでは「LOCAL」修飾子を使用できません。興味深いことに、CSVフォルダーへの読み取り/書き込みアクセス権の付与も機能しませんでした。
AWSインスタンスでmysqlのテーブルにデータを入力するときに同じ問題が発生しました。
私の場合、インスタンス自体にcsvファイルがありました。
絶対パスを設定することで問題が解決しました。
MySQLドキュメントの行は次のとおりです。
LOCALが指定されている場合、ファイルはクライアントホスト上のクライアントプログラムによって読み取られ、サーバーに送信されます。ファイルは、正確な場所を指定するためのフルパス名として指定できます。相対パス名として指定された場合、その名前はクライアントプログラムが起動されたディレクトリを基準にして解釈されます。