回答:
私もこの問題に遭遇しました。LOCAL
SQLステートメントに追加する必要がありました。
たとえば、これは許可の問題を与えます:
LOAD DATA INFILE '{$file}' INTO TABLE {$table}
LOCAL
ステートメントに追加すると、権限の問題は解消されます。そのようです:
LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table}
--local-infile
オプションでmysqlを呼び出す必要がある場合もあります。
私はこの問題を抱えていました。探し回ったところ、満足のいく答えが見つかりませんでした。検索結果を以下にまとめます。
アクセス拒否エラーは、次のことを意味している可能性があります。
GRANT FILE on *.* to user@'localhost'
)がありません。または、次のコマンドを使用してみてください:
load data local infile 'home/data.txt' into table customer;
これはうまくいくはずです。私の場合はうまくいきました。
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Lyonからの文字列は私に非常に良いヒントを与えてくれました:Windowsでは、バックスラッシュではなくスラッシュを使用する必要があります。このコードは私にとってはうまくいきます:
File tempFile = File.createTempFile(tableName, ".csv");
FileUtils.copyInputStreamToFile(data, tempFile);
JdbcTemplate template = new JdbcTemplate(dataSource);
String path = tempFile.getAbsolutePath().replace('\\', '/');
int rows = template.update(MessageFormat
.format("LOAD DATA LOCAL INFILE ''{0}'' INTO TABLE {1} FIELDS TERMINATED BY '',''",
path, tableName));
logger.info("imported {} rows into {}", rows, tableName);
tempFile.delete();
私は同じ問題に遭遇しました、そしてそれらのステップに従うことによってそれを解決しました:
この3番目のポイントについては、以下を参照できます。 https //dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_secure_file_priv
BR、
広告
あなたがコマンドラインを使用しているなら私は簡単なものを見つけました
としてログインmysql -u[username] -p[password] --local-infile
その後 SET GLOBAL local_infile = 1;
データベースを選択する use [db_name]
そして最後に LOAD DATA LOCAL INFILE 'C:\\Users\\shant\\Downloads\\data-1573708892247.csv' INTO TABLE visitors_final_test FIELDS TERMINATED BY ','LINES TERMINATED BY '\r \n' IGNORE 1 LINES;
SET GLOBAL local_infile = 1;
機能していないようですが、それがなければそれでも--local-infile
うまくいきませんでした
MySQLテーブルのロードは高速で簡単です(Python / Djangoモデルマネージャスクリプトを使用していた)。
1)すべての列VARCHAR(n)NULLを含むテーブルを作成します。例:
mysql> CREATE TABLE cw_well2( api VARCHAR(10) NULL,api_county VARCHAR(3) NULL);
2)csvからヘッダー(最初の行)を削除してからロードします(LOCALを忘れた場合は、「#1045-ユーザー 'user' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES)」):
mysql> LOAD DATA LOCAL INFILE "/home/magula6/cogswatch2/well2.csv" INTO TABLE cw_well2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
-> ;
Query OK, 119426 rows affected, 19962 warnings (3.41 sec)
3)列を変更します。
mysql> ALTER TABLE cw_well2 CHANGE spud_date spud_date DATE;
mysql> ALTER TABLE cw_well2 CHANGE latitude latitude FLOAT;
ほら!