LOAD DATA 支持远程导入数据吗?
3 个赞
LOAD DATA 支持远程导入数据,但需要区分两种场景,使用方式不同:
不带 LOCAL 关键字(服务器端文件)
LOAD DATA INFILE '/path/to/file.txt' INTO TABLE table_name;
- 文件必须存在于 MySQL 服务器所在的主机上,且路径为服务器上的绝对路径。
- 受
secure_file_priv参数限制,文件通常需要放在该参数指定的目录下。 - 执行用户需要拥有
FILE权限。
这种方式不支持从客户端机器读取文件,只能读取服务器本地的文件。
带 LOCAL 关键字(客户端文件 → 远程服务器)
LOAD DATA LOCAL INFILE '/local/path/file.txt' INTO TABLE table_name;
这才是真正意义上的"远程导入"——从客户端本地读取文件,通过网络传输到 MySQL 服务器,再加载到表中。
使用 LOCAL 需要满足以下条件:
-
服务端启用
local_infile:SET GLOBAL local_infile = 1; -
客户端连接时启用:
mysql --local-infile=1 -u user -p db_name - 如果用 Python(PyMySQL),连接时需设
local_infile=True;Java JDBC 需加?allowLoadLocalInfile=true
1 个赞