用户名
密码
侧边栏壁纸
  • 累计撰写 37 篇文章
  • 累计收到 10 条评论

MySQL处理Excel数据

龙流
2021-07-25 / 0 评论 / 104 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年09月30日,已超过230天没有更新,若内容或图片失效,请留言反馈。

了解一下-关于Excel神操作

拿Excel当PhotoShop作画.
Excel函数版bad apple.
甚至用Excel编程...

 Excel表格,对里面的数据进行比对和整理,首先不可能一个一个去修改去填写数据啊,利用函数啊或其他什么Excel功能我这三脚猫的Excel操作在满足不了需求啊,另辟蹊径把数据导入到MySQL数据库的形式进行数据操作,得到需要的数据在给领导。

Excel数据导入MySQL数据库

- 任何一个MySQL客户端(如:Navicat、SQLyog)都有导入向导,我用的是SQLyog
1. 在工具栏选择(高级工具->导入外部数据)会出现一个导入数据向导,直接点击下一步
2. 然后选择导入的文件是什么格式的,选择文件位置,再点下一步
3. 选择导入的数据库,默认是当前连接的数据库,所以直接下一步
4. 由于是从Excel表格导入数据,Excel中有列名,所以选择从数据源拷贝数据->下一步
5. source下对应的是Excel中的Shell名,勾选你需要导入的Shell数据;Destination选择导入的表,也可以直接以Excel数据为表,直接设置一个表名;Map设置Exce列与表字段映射关系;设置好后,就可以点击下一步
6. 后面都是点下一步,直到最后窗口日志,出现successful。最后完成

MySQL1.png

MySQL2.png

MySQL3.png

MySQL4.png

MySQL5.png

效果图

MySQL存储过程FETCH INFO与WHILE和LOOP的使用

WHILE实现

CREATE DEFINER=`root`@`localhost` PROCEDURE `P_GX_LZPI1_202`()
BEGIN
    #Routine body goes here...
DECLARE flag INT DEFAULT 0;
DECLARE tab_num varchar(10);
DECLARE curJob CURSOR FOR SELECT `表顺序号` FROM `冷轧pi系统字段1_202` GROUP BY `表顺序号`;
# 溢出处理,查询是否有下一个数据,没有将标识设为1
DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1; 
OPEN curJob;
# 取值设置到tab_num中
FETCH curJob INTO tab_num;
# 使用while循环
WHILE flag != 1 DO
# 主要操作过程
INSERT INTO `冷轧test`  
SELECT  a.`机组号`,
    a.`机组中文名`,
    a.`工艺顺序号`,
    a.`工艺段`,
    a.`表顺序号`,
    a.`表名`,
    (@i:=@i+1)   AS   字段顺序号,
    a.`字段名` ,
    a.`字段中文名`,
    a.`是否需对齐`
FROM `冷轧pi系统字段1_202` a,(SELECT   @i:=0)   AS   it  WHERE a.`表顺序号` = tab_num;
# 把游标向后移一位
FETCH curJob INTO tab_num;
# 结束循环
END WHILE;
CLOSE curJob;
END

LOOP方式实现

CREATE DEFINER=`root`@`localhost` PROCEDURE `P_GX_LZPI2_112`()
BEGIN
    DECLARE tab_num VARCHAR(10);
    DECLARE done INT DEFAULT FALSE;
    DECLARE curJob CURSOR FOR ( -- 定义
        SELECT `表顺序号` FROM `冷轧pi系统字段1_202` GROUP BY `表顺序号`
    );
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 监听器
    
    OPEN curJob; -- 打开游标
    label:LOOP
        FETCH curJob INTO tab_num;
        IF done THEN LEAVE label;
        END IF;
        INSERT INTO `冷轧test`  
        SELECT  a.`机组号`,
            a.`机组中文名`,
            a.`工艺顺序号`,
            a.`工艺段`,
            a.`表顺序号`,
            a.`表名`,
            (@i:=@i+1)   AS   字段顺序号,
            a.`字段名` ,
            a.`字段中文名`,
            a.`是否需对齐`
        FROM `冷轧pi系统字段2_112` a,(SELECT   @i:=0)   AS   it  WHERE a.`表顺序号` = tab_num;
    END LOOP label;
    
    CLOSE curJob; -- 关闭游标

END
0

评论 (0)

取消