Mysql 数据库循环插入与循环更新
近期因为工作原因,需要根据用户提供的excel表格数据进行对应数据库表单导入。导入过程中使用了mysql循环插入语句,以及循环更新语句,特此记录,以免遗忘。
用户提供资料展示
本以为excel文件内容为直接可导入记录,拿到后发现excel文件后,原始表格内容还需要进一步计算方可得出实际需要倒入的记录内容。但每一条原始记录有具体固定的计算逻辑。因此其实际的操作步骤为,先计算出实时需要导入内容,然后再根据实际导入内容进行导入。
首先我们看看用户提供的要插入的数据的信息表格

循环插入记录完成记录表的初始化
有了用户提供的这个插入记录相关信息,我们就可以计算出该信息表具体需要多少条记录。我们将要插入的记录数据条数计算出来后,然后我们就可以使用循环插入记录的方式来完成表记录的初始化。下面的Sql语句流程是首先创建一个完成循环插入的存储过程,然后进行调用,再进行存储过程释放。
CREATE PROCEDURE p01 ()
BEGIN
declare i int;
SET i = 1;
WHILE i < 1+1451 DO
INSERT INTO radio_siglsrc_rec (id_sigsrc,efs_max,efs_min,model,anti_interference) VALUES(i,1,70,1,1);
SET i = i + 1;
END WHILE;
END;
CALL p01();
DROP PROCEDURE p01;
进行数据记录的更新
撤销上面的步骤完成了信息表的初始化,接下来我们需要对记录的名称字段,频率字段值进行更新。如下条件。
当前需要更新的起始位置:1500行
起始频率 单位 信道数 作用名称 带宽 单位
160.650 kHz 5 XXXXX频率 0.3 kHz
160650
下面的sql语句完成 从 id_sigsrc ==1500 的记录开始,更新名称,名称自动编号,frq_center值根据带宽自动追加。
CREATE PROCEDURE p07 ()
BEGIN
declare i int;
declare idx int;
declare var_frq_center BIGINT;
SET i = 1500;
SET idx = 1;
SET var_frq_center = 160650;
WHILE i < (1500+5) DO
UPDATE radio_siglsrc_rec set name_sigsrc = CONCAT('XXXXXXXA',idx) , frq_center=var_frq_center , span=300 where id_sigsrc=i ;
SET i = i + 1;
SET idx = idx + 1;
SET var_frq_center = var_frq_center + 300;
END WHILE;
END;
CALL p07();
DROP PROCEDURE p07;
好记性不如烂笔头,养成好习惯,坚持记录。
文章描述了作者在工作中如何使用Mysql的循环插入和更新语句,处理用户提供的Excel数据,进行数据库表单导入,包括创建存储过程初始化记录和更新数据的过程。
1万+

被折叠的 条评论
为什么被折叠?



