web-dev-qa-db-ja.com

MySQLインポートcsvファイルエラー13(HY000):/path/file.csvの統計を取得できません(エラーコード:2)

私はMySQL(5.5.34)/ Linux(Ubuntu 12.04 LTS)の初心者です `

1つのテーブルを持つ単純なデータベースを作成しました。 'data_test.csvファイルを介してデータをインポートしようとすると、エラーメッセージ13が表示されます。

ターミナルからのエキスパートは次のとおりです。

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> 

注:LOAD DATA LOCAL INFILEでLOCALを使用すると、次のエラーが表示されます:ERROR 1148(42000):使用されたコマンドは、このMySQLバージョンでは許可されていません

16
Guillermo

LOAD DATA INFILEをご利用いただきありがとうございます。

LOAD DATA LOCAL INFILEではなくLOAD DATA INFILEを使用してください。

他の問題はこれであるかもしれません、次のリンクにアクセスしてください: MySQL LOAD DATA。

MySQLにログインすると、次のようになります。

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;

次に、LOAD DATA LOCAL INFILEを使用してCSVをロードします。セキュリティ上の理由により、新しいMySQLバージョンでCSVをロードする前に--local-infileを使用する必要があります。

27
Abdul Manaf

MySQLでは、CSVファイルがアクセス可能なディレクトリにある必要があります。

「/ home/stockrecdb /」から「/ tmp」にファイルを移動することでも問題が解決する場合があります。

3
Polor Beer

上記の回答でOPの問題は解決しましたが、同じ問題をどのように解決したかについては貢献した方がいいと思います。エラー13は、不正または不十分なファイル権限が原因で発生します。私の場合、これはSELinuxが原因でした。 SELinuxを使用している場合、MySQLの許可されたディレクトリにデータファイルパスを追加するための修正は、この回答にあります: https://stackoverflow.com/a/3971632/144916

3
Sam_Butler

この正確なエラーメッセージError 13 (HY000)がありました。これは、Abdul Manafによって提案されたLOCALオプションを使用して解決されました。しかし、サイズが101GBのCSVファイルで行き詰まりました。このCSVファイルをインポートしようとしたときに、システムがディスク容量不足の警告を報告し、インポートタスクが完了していませんでした。イライラして、ディスクユーティリティのGuiツールでさえdf -hコマンドは、ルートディレクトリに85GB以上のディスク領域が残っていることを示しました。

次に、LOCALオプションがCSVファイルをルート/ディレクトリの一時的な場所にコピーすることを学びました。次に、一時ファイルから読み取ります。 101 GBのCSVファイルがルートに残っている空き容量よりも大きいため、ディスク不足の警告が表示されましたが、これは、後で認識したシステムモニター以外の多くのGUIおよびコマンドベースのツールでは検出されませんでした。 300 GBを超えるMySQLデータベースで作業しているので、MySQLデータディレクトリを別の内部ディスクに移動する必要があり、CSVを外部ハードディスクからインポートしていました。 101 GBのCSVファイルを内部ディスクのMySQLデータディレクトリにコピーすると、LOAD DATA INFILEコマンド、エラーメッセージなし。

したがって、ルートディレクトリの空き容量よりも大きい大きなCSVファイルのLOCALオプションに注意してください。 LOCALオプションもSSDの耐久性には適していません。

1
Narnia_Optimus