Mysql 无法导入csv文件问题

Mysql 无法导入csv文件问题

问题:

ERROR 29 (HY000): File ‘/home/mysql/data/film.csv’ not found (OS errno 13 - Permission denied)

一般情况

这个错误通常是由于 MySQL 没有足够的权限访问要加载的数据文件 /home/mysql/data/film1.csv,导致无法加载文件。

为了解决这个问题,您可以尝试以下方法:

  1. 检查文件权限:确保 MySQL 用户(通常是 mysql 用户)具有足够的权限读取要加载的数据文件。您可以使用 ls -l /home/mysql/data/film1.csv 命令查看文件的权限和所有者。如果文件的所有者和组与 MySQL 用户不同,您可能需要使用 chown 命令将所有权更改为 MySQL 用户,例如:

    sudo chown mysql:mysql /home/mysql/data/film1.csv
    

    或者,您可以使用 chmod 命令更改文件的权限,以确保 MySQL 用户可以读取文件,例如:

    sudo chmod 644 /home/mysql/data/film1.csv
    
  2. secure-file-priv 选项修改为允许加载数据文件的目录。您可以编辑 MySQL 配置文件(通常位于 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf),并在 [mysqld] 部分中添加以下行:

    secure-file-priv = "" 
    

    这将允许 MySQL 加载任何目录中的数据文件。请注意,这样可能会导致系统的安全性受到影响,因此应该谨慎使用

  3. 检查文件路径:确保指定的文件路径正确,并且文件确实存在。您可以使用 ls /home/mysql/data/film1.csv 命令检查文件是否存在。如果文件不存在,请检查文件路径是否正确。

如果上述方法都无法解决问题,请尝试使用 LOAD DATA INFILE 命令而不是 LOAD DATA LOCAL INFILE 命令。LOAD DATA INFILE 命令可以从 MySQL 服务器的文件系统中加载数据文件,而不需要将文件传输到客户端。但是,使用 LOAD DATA INFILE 命令需要 MySQL 用户具有足够的权限访问要加载的文件。

下面这种情况是安全路径已改,文件权限也够,但就还是无法访问

另一种方法

使用 load data local的方法

LOAD DATA local INFILE '/home/mysql/data/film.csv' INTO TABLE film2 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

要启用MySQL服务器上的本地数据加载功能,你可以在MySQL服务器的配置文件中添加以下行:

secure_file_priv = ""

这将禁用 “secure_file_priv” 变量,允许从任意目录加载数据文件。在修改配置文件后,你需要重新启动MySQL服务器才能使新设置生效。

要启用客户端上的本地数据加载功能,你可以在连接MySQL服务器时添加一个选项:

mysql -u <username> -p --local-infile=1

亦或在mysql里面进行修改

SET GLOBAL local_infile = 1;

这将启用本地数据加载功能并允许从客户端加载数据文件。

请注意,启用本地数据加载功能可能会带来一定的安全风险。在启用本地数据加载功能时,请确保只从可信的来源加载数据文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值