文件路径问题
权限问题
安全限制
secure_file_priv
系统变量限制了可加载文件的位置字符集/编码问题
JDBC驱动限制
-- 查看当前设置
SHOW VARIABLES LIKE 'secure_file_priv';
-- 在my.cnf/my.ini中设置(需要重启MySQL)
[mysqld]
secure_file_priv = /path/to/allowed/directory/
String sql = "LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE my_table";
# 确保MySQL用户可以读取该文件
chmod 644 /path/to/file.csv
chown mysql:mysql /path/to/file.csv
try (Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt = conn.createStatement()) {
// 启用LOCAL INFILE
conn.createStatement().execute("SET GLOBAL local_infile = true");
// 执行LOAD DATA
String sql = "LOAD DATA LOCAL INFILE '/path/to/file.csv' " +
"INTO TABLE my_table " +
"FIELDS TERMINATED BY ',' " +
"ENCLOSED BY '\"' " +
"LINES TERMINATED BY '\\n' " +
"IGNORE 1 ROWS";
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
在连接URL中添加允许LOCAL INFILE的参数:
String url = "jdbc:mysql://localhost:3306/dbname?allowLoadLocalInfile=true";
如果仍然无法解决,可以考虑:
mysqlimport
工具max_allowed_packet
参数希望这些解决方案能帮助您解决问题。如果仍有问题,请提供具体的错误信息以便进一步诊断。