数据清洗及mysql导出xls

本文介绍了在MySQL中遇到导入数据时由于secure_file_priv选项导致的错误及其解决方案,包括修改my.ini配置文件并重启服务。此外,还提供了复制表、删除重复数据的SQL语句以及导出数据到XLS文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:导入数据时,出现这个错误:

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

解决办法:

在MySQL安装路径找到my.ini文件(需要有文件编辑权限),

(一般是C盘或D盘吧,看你们自己的安装情况,我的如下:)

D:\ProgramData\MySQL\MySQL Server 5.7\my.ini
C:\Program Files\mysql-8.0.18-winx64\my.ini

找到这串字“secure_file_priv”,设它没有值:

secure_file_priv=

解释一下,

secure_file_priv 为 null 时,表示限制mysqld不允许导入或导出。
secure_file_priv 为 C:\temp 时,表示限制mysqld只能在C:\temp目录中执行导入导出,其他目录不能执行。
secure_file_priv 没有值时,表示可在任意目录导入导出。

然后重启MySQL服务,如下操作:

在任务栏搜索框输入“services.msc”,找到MySQL,然后重启一下,OK。

-- 1.复制源表,方便清洗数据

create table table_name_new as (select * from table_name_old);

-- 2.根据job_company等分组,查找出id最小的。然后再查找id不包含的。这样就查询出了所有的重复数据(除了id最小的那行)

SELECT
*
FROM
tb_job AS ta
WHERE
ta.id <> ( SELECT MAX( tb.id ) FROM tb_job AS tb 
WHERE ta.job_company = tb.job_company AND ta.job_name=tb.`job_name` AND ta.job_salary=tb.`job_salary` AND ta.job_area=tb.`job_area`
);

-- 3.删除表中多余重复试题并且只留1条
 

DELETE 
FROM
    tb_job AS ta
WHERE
    ta.id <> (
SELECT
    t.maxid 
FROM
    ( SELECT MAX( tb.id ) AS maxid FROM tb_job AS tb WHERE ta.job_company = tb.job_company AND ta.job_name=tb.`job_name` AND ta.job_salary=tb.`job_salary` AND ta.job_area=tb.`job_area` ) t 
    );

-- 4.导出xls

SELECT job_company,job_name,job_salary,job_edu,area,IFNULL(public_time,'')
FROM tb_job INTO OUTFILE 'C:\\mysqltoxls\\job_info.xls'
CHARACTER SET gbk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值