mysql5.5 导出数据提示 --secure-file-priv 选项问题的解决方法

一、前言

         最近做项目由于到一个问题,有个客户提出一个需求,需要将两个数据库中的两个表的数据合并,本以为是很简单的事情,于是就非常爽快的答应客户一天内给他弄好,哪知道其中遇到很多问题,于是写下这片文章记录下来,防止重蹈覆辙。

二、MySql 导出表中数据,不导出表结构。

通过查询分析器只能导出结构或者结果和数据,不能只导出数据,因此,只能通过mysqldump来操作:

命令如下:

 mysqldump -h localhost -uroot -p123456 --skip-extended-insert --complete-insert mysql help_topic  -t -c > C:\\Users\\chenxi\\Desktop\\sql\\123.sql

#mysql导出insert带字段的sql脚本数据
#mysqldump -u用户名 -p密码 -h数据库主机ip -P端口号 --skip-extended-insert --complete-insert 数据库名 表名  -t -c --where="条件">~/test.sql          
            --skip-extended-insert 一行一行的导出
            -t 不会产生create table建表和drop table语句
            -c  产生完整的insert语句(区别字段)
            --where 拼接条件,只导出符合条件的数据

如下图:

mysql5.5 导出数据提示 --secure-file-priv 选项问题的解决方法_第1张图片

但是:

如果表中,存在主键,会发现再次导入时,mysql会产生主键重复错误。因为通过mysqldump 只能导出一个表的所有字段,不能导出部分列的数据。因此,这种方式只能适用于没存主键的表。

三、通过mysql 命令格式化select 导出文件

方法一行不通,就使用方法二,通过mysql 执行查询语句,将指定列数据导出,命令如下:

>mysql -uroot -p123456 mysql -e "SELECT name, help_category_id, description, example, url FROM help_topic INTO OUTFILE 'C:\\Users\\chenxi\\Desktop\\sql\\123.sql' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'";

在mysql 5.5 中会报如下错误:

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

出现错误的原因是:

这个原因其实很简单,是因为在安装MySQL的时候限制了导入与导出的目录权限,只能在规定的目录下才能导入,

因此,在windows 上,mysql 需要查看my.ini 文件对于secure-file-priv 当前的值是什么,即导出目录在哪里。

查看了一下,发现5.5  中没有secure-file-priv 这个字段,因此,需要在my.ini文件末尾增加以下语句,后重启mysql。

secure_file_priv=''

mysql5.5 导出数据提示 --secure-file-priv 选项问题的解决方法_第2张图片

在Windows 重启mysql 方法如下:

  1.以"管理员"方式,运行cmd;

  2.启动:输入 net stop mysql

  3.停止:输入 net start mysql

  提示* Redhat Linux 也支持service command,启动:# service mysqld start 停止:# service mysqld stop 重启:# service mysqld restart

  * Windows下不能直接重启(restart),只能先停止,再启动。

  如下图:

mysql5.5 导出数据提示 --secure-file-priv 选项问题的解决方法_第3张图片

再次执行上面的命令,成功。

四、从文件导入到数据库,执行如下命令。

mysql -uroot -p123456 -Dmysql -e "LOAD DATA INFILE 'C:\\Users\\chenxi\\Desktop\\sql\\123.sql' INTO TABLE help_topic FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'  LINES TERMINATED BY '\n' (name, help_category_id, description, example, url)";

完毕.....

参考文章:

mysql5.7导出数据提示--secure-file-priv选项问题的解决方法

你可能感兴趣的:(MySql)