博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【存储过程】从数据库中读取数据保存到文件中
阅读量:5969 次
发布时间:2019-06-19

本文共 1407 字,大约阅读时间需要 4 分钟。

hot3.png

         由于初期规划不好,项目管理的action都存入到数据库中了,而实际上应该以配置文件的形式保存的,所以现在想改过来。一条条复制是不可能的,几百条记录,可以用java编写个小程序或者其他语言编写个脚本来实现,都很简单,但因为这两天在学存储过程,所以就试着写一个了(数据库的过程、函数和触发器等真的很好玩啊!)。 

        其实这个过程只有两个要点:
        ①如何从数据库中读取出所有action而且没有重复(因为之前很多失误操作,写入很多重复的记录);
        ②如何把读出来的集合转换成properties的格式并写入文件。
        
        ①的查询语句:
        select C_ACTION,B_POWER from p_link where I_ID in

        (select max(I_ID) from p_link group by C_ACTION); 

        ②循环处理读出来的集合,拼装成一个大串,一次性写入文件:(使用光标来遍历集合)

        repeat

fetch c_cursor into tmp_action,tmp_power;

if not i_done then

set c_content = concat(c_content, tmp_action, '=', tmp_power, char(13));

end if;

until i_done end repeat;

        最终可得到一行行结构为 XXX=XXX 键值对。

详细代码如下:

drop procedure if exists get_all_links;delimiter $$create procedure get_all_links()	begin		declare c_content text;	declare i_done int default 0; 	declare tmp_action varchar(100);	declare tmp_power tinyint;		declare c_cursor cursor for		select C_ACTION,B_POWER from p_link where I_ID in		(select max(I_ID) from p_link group by C_ACTION);	declare continue handler for sqlstate '02000' set i_done = 1;		open c_cursor;	set c_content = '';	repeat		fetch c_cursor into tmp_action,tmp_power;		if not i_done then			set c_content = concat(c_content, tmp_action, '=', tmp_power, char(13));		end if;	until i_done end repeat;	close c_cursor;		select c_content into outfile 'D:\\action.properties';		end$$delimiter ;call get_all_links();drop procedure get_all_links;

转载于:https://my.oschina.net/u/1438721/blog/279851

你可能感兴趣的文章
(基础篇)PHP获取时间、时间戳的各种格式写法汇总
查看>>
JAVA泛型详解2 转载
查看>>
div+CSS编程技巧
查看>>
Android 8.0 Settings新添加的重写getMetricsCategory
查看>>
#!/usr/bin/env python与#!/usr/bin/python的区别
查看>>
TSM对Oracle数据库备份脚本
查看>>
了解HAProxy原理及参数
查看>>
基于开源技术的上网行为管理实现方案
查看>>
Python学习笔记四(Python OS模块)
查看>>
Google Glass是工具不是玩具
查看>>
f_bfree和f_bavail的区别
查看>>
linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...
查看>>
从零开始实现一个简易的Java MVC框架(六)--加强AOP功能
查看>>
While executing gem ... (Errno::EACCES)
查看>>
2016.7.14最新cocoapods最新安装教程
查看>>
OkHttpClient源码分析(五)—— ConnectInterceptor和CallServerInterceptor
查看>>
[MetalKit]2-Using-MetalKit-part-1使用MetalKit1
查看>>
Java虚拟机 —— 垃圾回收机制
查看>>
H5 中的 new FileReader() 以及 识别上传的文件是否为图片
查看>>
零基础学习 Python 之运算符
查看>>