数据库表多字段导入到另一个表变成多条数据

有个很古老的表 200个字段左右,都是一些说明书等等信息,最近在重构项目

新表设计成每个字段加个标记变成单独一条数据

原表几万条数据,新表会变成 几百万条数据

写过 java/python 用程序连接数据去处理,各种原因都失败了

最后没办法 写了一个存储过程,真快呀

下面贴存储过程代码

CREATE PROCEDURE `products_info_convert`() 
	COMMENT '旧版商品详情转新版' 
begin


     # 创建接收游标数据的变量
	 declare   aID                      int                    ;
#... 此处省略200个字段  
#  每个变量前加a 是因为不能和数据字段重合 
#  没有纠结为什么 能用就好了
#  这个字段可以去创建表的语句里面 copy 然后用编辑器 《列操作》很快的  
#  下面所有的字段都是列操作出来的
     declare   astatus                  tinyint unsigned       ;



    # 创建结束标志变量
	declare done int default false;
    declare ret CURSOR FOR SELECT ID,...status from products_info;
    # 指定游标循环结束时的返回值
	declare continue HANDLER for not found set done = true;



    TRUNCATE TABLE products_info_new;

    open ret;

    # 开始循环游标里的数据
	read_loop:loop
        fetch abn11 into aID, .............. 此处省略200个字段,astatus;
        # 判断游标的循环是否结束
	    if done then
		    leave read_loop;	# 跳出游标循环
	    end if;

        insert into products_info_new(p_id,tag,name,desc,_status,create_time)
         VALUES
            (aID,'code','',aCode,0,160988000000),
              此处省略200行,也是列操作就可以了
            (aID,'status','',astatus,0,160988000000);
    end loop;

    close ret;



end 

也是借鉴了一些网上的其它文章写的

谢谢大家 欢迎指导

数据库新人报道

部分代码 不确定是否不需要

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值