数据库操作对程序员来说是再平常不过的事情,但是当有业务人员问我们要数据的时候,那肯定不能冷冰冰的直接把数据给他们,至少要生成一个excel,那么这里我们就用通过快速生成excel文件的命令来解决这个问题。
我们先随手生成一张用例表
CREATE TABLE `t_address` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`key` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
通过这段命令来生成excel
SELECT id,address FROM `t_address` INTO OUTFILE 'D:/a/address.xls'
1 queries executed, 0 success, 1 errors, 0 warnings
查询:select id,address from `t_address` into outfile 'D:/a/address.xls'
错误代码: 1290
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0 sec
很明显,这条指令是有问题的,那我们来根据错误代码寻找一下错误原因。
这句话的大致意思是:
mysql文件的导入和导出路径有默认的设置,即 secure-file-priv,当传入的csv文件路径与默认的路径冲突时就会报错。
这里面的关键词就是secure-file-priv,接下来我们就来找一下它的默认设置:
SHOW VARIABLES LIKE '%secure%';
看一下结果:
在这里可以看到,secure_file_priv默认是C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\。
关于secure_file_priv这个值,他可以有三种情况:
1.secure_file_prive=null —— 不允许导入导出
2.secure_file_priv=/path/——只允许在默认的目录下导入导出
3.secure_file_priv=’’ ——导入导出无限制
可以看出,我们这里的值就是默认的第二种情况,既然如此,我们就可以来修改一下这条命令:
SELECT id,address FROM `t_address` INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/address.xls'
1 queries executed, 1 success, 0 errors, 0 warnings
查询:select id,address from `t_address` into outfile 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/address.xls'
共 4 行受到影响
执行耗时 : 0.001 sec
传送时间 : 0 sec
总耗时 : 0.002 sec
这里是成功了