Mysql通过存储过程导入Excel数据

1.确认excel结构

在这里插入图片描述

2.设计临时表,将excel数据导入临时表

在这里插入图片描述

3.通过客户端工具将excel导入临时表

我这里使用的Sqlyog

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.创建存储过程,将临时表数据导入数据库中

DELIMITER $$

USE `hzero_platform`$$

DROP PROCEDURE IF EXISTS `employee_excel`$$

CREATE DEFINER=`root`@`%` PROCEDURE `employee_excel`()
BEGIN
	DECLARE employeeCode VARCHAR(50);
        DECLARE employeeName VARCHAR(100);
        DECLARE phone VARCHAR(50);
        DECLARE email VARCHAR(50);
        DECLARE loginName VARCHAR(50);
        DECLARE unitCode VARCHAR(50);
        DECLARE departCode VARCHAR(50);
        DECLARE positionCode VARCHAR(50);
        DECLARE employeeId INT;
        DECLARE userId INT;
        DECLARE unitId INT;
        DECLARE departId INT;
        DECLARE positionId INT;
        DECLARE done INT DEFAULT 0;
        DECLARE id_list CURSOR FOR
	    SELECT ee.employeeCode, ee.employeeName, ee.phone, ee.email, ee.loginName, ee.unitCode, ee.departCode, ee.positionCode FROM  excel_employee ee ;
        DECLARE EXIT HANDLER FOR SQLEXCEPTION
        BEGIN
            GET DIAGNOSTICS CONDITION 1 @p1=RETURNED_SQLSTATE,@p2= MESSAGE_TEXT;
            SELECT @p1,@p2;
            ROLLBACK;
    -- 	    自定义错误
            IF @p1='23000' THEN
            SIGNAL SQLSTATE 'BF000' SET MESSAGE_TEXT = @p2;
            ELSE
            SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = @p2;
            END IF;
        END;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
        START TRANSACTION; -- 整个存储过程指定为一个事务
        OPEN id_list;
	    FETCH id_list INTO employeeCode, employeeName, phone, email, loginName, unitCode, departCode, positionCode;
        -- 确认是否取到数据
        SELECT employeeCode, employeeName, phone, email, loginName, unitCode, departCode, positionCode;
        WHILE done<>1 DO
            INSERT INTO hpfm_employee(employee_num, NAME, mobile, email, gender)
            VALUES (employeeCode, employeeName, phone, email, 0);
            -- 获取员工主键
            SELECT LAST_INSERT_ID() INTO employeeId;
            SELECT id INTO userId FROM iam_user
            WHERE login_name=loginName;
            -- 维护员工和用户的关秀
            INSERT INTO hpfm_employee_user(employee_id, user_id)
            VALUES (employeeId, userId);
            SELECT unit_id INTO unitId FROM hpfm_unit
            WHERE unit_code=unitCode;
            SELECT unit_id INTO departId FROM hpfm_unit
            WHERE unit_code=departCode;
            SELECT position_id INTO positionId FROM hpfm_position
            WHERE position_code=positionCode;
            INSERT INTO hpfm_employee_assign(employee_id, unit_company_id, unit_id, position_id, tenant_id)
            VALUES (employeeId, unitId, departId, positionId, 0);
        FETCH id_list INTO employeeCode, employeeName, phone, email, loginName, unitCode, departCode, positionCode;
        END WHILE;
        CLOSE id_list;
        COMMIT ; -- 提交事务
    END$$

DELIMITER ;

5.调用存储过程

CALL employee_excel();
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将Excel数据导入MySQL数据库,可以按照以下步骤进行操作: 1. 首先,查看提供的Excel数据数据库的字段,确保它们的对应关系。 2. 对于Excel表中的时间数据,需要进行调整以避免导入数据库后出现部分缺失。可以选择分列、固定列宽,并将数据完全包含在黑线左侧。还需将时间格式改为文本。 3. 对于一些文字数据,如果数据库中利用枚举(int类型)存储类型字段,需要将Excel表的数据改成枚举或int类型。可以使用Ctrl+F选择替换来修改。 4. 接下来,将Excel数据导入MySQL数据库。在MySQL的表上点击鼠标右键,选择需要导入Excel文件和数据表。在导入过程中,选择需要导入的字段行、数据行以及日期格式,并选择需要导入MySQL表。点击下一步即可。 5. 导入完成后,可以查看Excel的字段和MySQL表中的字段是否一致,以确保导入数据正确无误。 6. 最后,刷新查看数据库表,确认数据已经成功导入。 另外,还可以使用另一种方法将Excel数据导入MySQL数据库: 1. 将Excel表格另存为CSV文件,CSV文件默认为逗号分隔。 2. 使用记事本工具打开保存好的CSV文件,并将其转换为UTF-8格式。 3. 使用MySQL可视化界面(如navicat for mysql),找到对应的数据库表,右键点击导入向导。 4. 在导入向导中,选择文本文件作为导入类型,并找到保存好的CSV文件作为数据源。选择逗号作为分隔符,并根据需求进行定义。然后检查源表和数据库表是否正确,建立映射关系。 5. 最后,点击开始,等待数据导入完成。在导入完成后,可以打开对应的数据库表,确认数据已经导入成功。 通过以上方法,您可以将Excel表中的数据快速导入MySQL数据库中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

潘顾昌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值