LOAD DATA 支持远程导入数据吗?

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_infileSET GLOBAL local_infile = 1;
  • 客户端连接时启用:mysql --local-infile=1 -u user -p db_name
  • 如果用 Python(PyMySQL),连接时需设 local_infile=True;Java JDBC 需加 ?allowLoadLocalInfile=true
1 个赞