Mysql 保存csv文件遇到的问题

LOAD DATA INFILE '/home/xx/xxx.csv'

当我使用 上面的 SQL 语句将 csv 文件 导入 mysql 时候,出错:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。

  • secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
  • secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
  • secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

查看secure-file-priv参数的值:

mysql> show global variables like '%secure_file_priv%';

输出的 secure_file_priv /var/lib/mysql-files/

说明文件只能在该位置导入/导出。可以将文件放在该位置,也可以指定自己的 secure_file_priv 位置。

假设修改为 /home/xx

sudo vim /etc/mysql/my.cnf 添加为:

[mysqld]

secure_file_priv='/home/xx'

再次查看:

mysql> show global variables like '%secure_file_priv%';

输出的 secure_file_priv' /home/xx'

重启mysql

service mysql restart

报错:

ERROR 29 (HY000) at line 16: File '/home/xx/xxx.csv' not found (OS errno 13 - Permission denied)

sudo vim /etc/apparmor.d/usr.sbin.mysqld  } 前面 加入 /home/xx/** rw,

sudo /etc/init.d/apparmor reload

sudo mysql -u root -p < xx.sql  # 成功

在下面的语句中 `order` `height(cm)` 列名称使用的是反引号,避免冲突,这里 order 是关键字  而() 也会有问题,所以加 反问号。 反问号在 数字键 左边。

CREATE TABLE president_heights (

`order` BIGINT NOT NULL AUTO_INCREMENT,

`name` VARCHAR(100) NOT NULL,

`height(cm)` INT NOT NULL,

PRIMARY KEY (`order`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

关闭mysql:  service mysql stop

参考:将CSV文件导入MySQL表 -MySQL教程™

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

理心炼丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值