1

次のコマンドを使用して、csvファイルをmySQLにロードしようとしています。

LOAD DATA INFILE '/tmp/alcoa_2012_05_15.csv' into table alcoa fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(@var1, Time, volume, open, close, min, max)
set date = STR_TO_DATE(@var1, '%d-%b-%y')

次のエラーが発生します

error 13, load data infile can't get stat of file Errcode: 2

これは、データファイルが見つからないことを示しています。私はコマンドの小さなバリエーションを試しました:

LOAD DATA LOCAL INFILE ...

他のすべては同じで、次のエラーメッセージが表示されます。

ERROR 1148, The used command is not allowed with this MySQL version!

Ubuntu 12.04でMySQLの最新ダウンロードを使用しています(どちらも2週間前にインストールされています)

このフォーラムを何度も検索した後、以前の質問に近い回答がありましたが、完全な回答ではなかったので、私は困惑しています。

ありがとう

ジェフェ

4

6 に答える 6

4

「LOAD DATA」を「LOAD DATA LOCAL」に置き換えてみてください

  • 「LOAD DATA」は、データベース サーバー上のファイル用です。
  • 「LOAD DATA LOCAL」はクライアント上のファイル用です。あなたはどれを持っていますか?
于 2015-01-04T07:45:59.930 に答える
1

この問題は、MySQL が独自のプライベート tmpsystemd-private-abcdefフォルダーを/tmp. そのため、ファイルを見つけることができず、データのロードを実行できませんでした。

PrivateTmp=false解決策は、/etc/systemd/system/mysqld.serviceファイルに次のように設定することでした 。

私の場合、ファイルは次のようになりました。

.include /usr/lib/systemd/system/mysqld.service
[Service]
LimitNOFILE=20000
PrivateTmp=false
于 2013-01-06T06:05:44.693 に答える
1

同じ問題があり、データを MySQL テーブルにロードできませんでした。その後、自分で問題を解決しました。

エラー コード 13 は、権限の問題に他なりません。

エラー コード 02 は、ファイルが見つからない場合です。

解決策は次のとおりです。

ファイルのパスを確認してください。正しい場合は、次のように解決できるアクセス許可の問題です。デフォルトでlocal-infileは、値は 0 に設定されています。使用するLOAD DATA LOCAL INFILE には、有効にする必要があります。

したがって、次のようにMySQL を起動します。

mysql -u ユーザー名 -p --local-infile

これはLOCAL INFILE起動時に有効になるため、問題なく使用できます。

于 2014-12-05T06:44:01.063 に答える
0

ここでの別の重大な問題は、ユーザーにとってまだ解決されていないと思います。コマンドラインからコマンドを使用しても、コマンド
を使用してもファイルを見つけることができないという単純な問題です(エラーコード 2)。 非常に自然な unix/linux ユーザーの想定では、ユーザーは次のようになります。mysql> shellmysqlimport

  1. 特定のディレクトリからのインポート操作の実行
  2. 実行mysqlimport中またはshell
  3. そこにインポートしたいファイルを見つける
  4. 次に、追加のパス、つまりファイル名またはその相対パスのみが必要であると仮定します。

しかし、MySQL で使用される相対パスは、MySQL のデータベース ディレクトリの場所、つまり/usr/lib/mysql/<dbname>.
pathing なしで名前が付けられたファイルを探しているため、エラーコード 2!

これは、ユーザーがインポートしようとしているデータベースのホームであるため、シェル、特にコマンド ライン インポート コマンドを起動するディレクトリではなく、そこにあるように見えますmysqlimport

mysqlimportこれは、私がそれを欠陥と呼ぶところまで、コマンドにとって非常に直感的ではありません。MySQL db ディレクトリが MySQL のインストール時に制御可能な場所であるかどうかはわかりません。そのため、特定のシステムでは異なる可能性があります。
解決策は、インポートされるファイルへの絶対パスを常に指定することです。 ビンゴ!そこにファイルを書き込む権限を付与し(dirは「MySQL」ユーザーが所有しています)、相対パスでアクセスし、シェルおよびコマンドラインコマンドで絶対パスでアクセスして、これをテストしました。確かに、MySQL のアクセス許可を使用してグーフィングした後、db を再作成しました!

于 2015-03-11T13:24:42.050 に答える
0

@raina77ow さん、ファイルのアクセス許可を確認するよう提案していただきありがとうございます。
私は他のすべてを見て長い時間を過ごしました。私はついにあなたの投稿を見て、見てみました。

私の問題はアクセス許可ではありませんでしたが、フォルダーが既知の拡張子を非表示にするように設定されていたため、ファイルに配置した追加の拡張子でした。

Windows エクスプローラーでファイルのプロパティを確認すると.txt、最後に余分な部分を確認して修正することができました。

私がそれを修正すると、ロードデータのローカルinfileは、他のファイルと同じように魅力的に機能しました。

これが他の誰かに役立つことを願っています。

于 2013-06-13T10:47:05.460 に答える
0

Debian を使用している場合、別の解決策として、ファイルを「/tmp」ディレクトリに移動します。それは私にとって問題を解決しました。

于 2016-07-28T22:21:07.623 に答える