C#定时执行某一个功能一(sqlite导出xml并压缩)
2017-05-14 09:15
435 查看
背景:
1、外网有新的数据,数据库是sqlite;需要经过网闸传到内网的数据库中以方便下一步的操作。
2、内网数据库是postgresql;
3、由于每天过网闸的数据有很多,同时为了区分是哪个部门的,减少数据的丢失,那么就需要把这些数据从sqllite中读到datatable中,然后每一条存放到一个xml文件中。对这些xml文件进行压缩,规范命名,然后传到内网的存储中,内网进行解压,读取xml文件,然后读取到postgresql中。
4、查询外网数据库,每天凌晨四点开始启动,查询内容:前一天24小时内容,以及当天零点到四点的内容;
两种方案:1、windows服务;2、控制台程序+windows定时计划
方案一:windows服务
(一)vs新建项目-windows服务。具体步骤:http://blog.csdn.net/cai15191466621/article/details/7007604(网上随便搜的一个教程,大家参考一下就ok)
配置文件内容:1、连接sqlite数据库;2、写类型:用户可选择是定时执行还是间隔执行;3、定时执行的小时;4、定时执行的分钟;5、导出的xml文件,新建的压缩包的存储路径;
(二)代码思路:
1、服务在启动时新建一个timer、timer事件中判断用户的类型,如果是定时执行,就去判断当前事件是否与用户指的时间相同,若相同就执行,否则不执行;
2、执行内容
(1)查询内容到datatable中;
(2)若有内容,则先在压缩包存放路径新建一个文件夹,命名:“固定格式”-“时间戳”;
(3)xml需要从当前运行exe相对路径中复制到文件夹中,命名根据某两个字段命名
(4)进行压缩文件夹
(5)如果压缩成功,则删除原文件夹
SevenZipTool是一个类:集成7z文件解压、压缩功能。这个类如果需要,请在博客下方留言~
方案二:控制台程序+windows定时计划
(一)配置文件内容:1、连接sqlite数据库;2、导出的xml文件,新建的压缩包的存储路径;
代码思路:
(1)查询内容到datatable中;
(2)若有内容,则先在压缩包存放路径新建一个文件夹,命名:“固定格式”-“时间戳”;
(3)xml需要从当前运行exe相对路径中复制到文件夹中,命名根据某两个字段命名
windows定时任务
Win7怎么设置定时自动执行任务
这个是导出xml并压缩功能,下一篇,解压并读取xml到postgresql
1、外网有新的数据,数据库是sqlite;需要经过网闸传到内网的数据库中以方便下一步的操作。
2、内网数据库是postgresql;
3、由于每天过网闸的数据有很多,同时为了区分是哪个部门的,减少数据的丢失,那么就需要把这些数据从sqllite中读到datatable中,然后每一条存放到一个xml文件中。对这些xml文件进行压缩,规范命名,然后传到内网的存储中,内网进行解压,读取xml文件,然后读取到postgresql中。
4、查询外网数据库,每天凌晨四点开始启动,查询内容:前一天24小时内容,以及当天零点到四点的内容;
两种方案:1、windows服务;2、控制台程序+windows定时计划
方案一:windows服务
(一)vs新建项目-windows服务。具体步骤:http://blog.csdn.net/cai15191466621/article/details/7007604(网上随便搜的一个教程,大家参考一下就ok)
配置文件内容:1、连接sqlite数据库;2、写类型:用户可选择是定时执行还是间隔执行;3、定时执行的小时;4、定时执行的分钟;5、导出的xml文件,新建的压缩包的存储路径;
(二)代码思路:
1、服务在启动时新建一个timer、timer事件中判断用户的类型,如果是定时执行,就去判断当前事件是否与用户指的时间相同,若相同就执行,否则不执行;
2、执行内容
(1)查询内容到datatable中;
(2)若有内容,则先在压缩包存放路径新建一个文件夹,命名:“固定格式”-“时间戳”;
(3)xml需要从当前运行exe相对路径中复制到文件夹中,命名根据某两个字段命名
foreach (DataRow dr in dt.Rows) { string Xmlname = dr["orderid"].ToString() + "_" + dr["batchid"].ToString() + ".xml"; string path = Path.Combine(filePath, Xmlname); File.Copy(oldXml, path); XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(path); XmlNode root = xmldoc.DocumentElement; XmlNode orderid = root.SelectSingleNode("/root/orderid"); orderid.InnerText = dr["orderid"].ToString(); XmlNode batchid = root.SelectSingleNode("/root/batchid"); batchid.InnerText = dr["batchid"].ToString(); XmlNode obsize = root.SelectSingleNode("/root/obsize"); obsize.InnerText = dr["obsize"].ToString(); XmlNode obfinish = root.SelectSingleNode("/root/obfinish"); obfinish.InnerText = dr["obfinish"].ToString(); XmlNode submittime = root.SelectSingleNode("/root/submittime"); submittime.InnerText = dr["submittime"].ToString(); m_log.Info(dr["submittime"]); XmlNode createtime = root.SelectSingleNode("/root/createtime"); createtime.InnerText = dr["createtime"].ToString(); XmlNode synctime = root.SelectSingleNode("/root/synctime"); synctime.InnerText = dr["synctime"].ToString(); XmlNode readytime = root.SelectSingleNode("/root/readytime"); readytime.InnerText = dr["readytime"].ToString(); XmlNode notifytime = root.SelectSingleNode("/root/notifytime"); notifytime.InnerText = dr["notifytime"].ToString(); XmlNode task_status = root.SelectSingleNode("/root/task_status"); task_status.InnerText = dr["task_status"].ToString(); XmlNode address = root.SelectSingleNode("/root/address"); address.InnerText = dr["address"].ToString(); xmldoc.Save(path); } m_log.Info("xml新建成功,准备压缩");
(4)进行压缩文件夹
(5)如果压缩成功,则删除原文件夹
//压缩 SevenZipTool zipTool = new SevenZipTool(); string message=zipTool.CompressDirectory(filePath, filePath+".zip"); if (message.Contains("成功")) { m_log.Info("压缩成功,准备删除"); DirectoryInfo di = new DirectoryInfo(filePath); di.Delete(true); m_log.Info("删除成功"); }
SevenZipTool是一个类:集成7z文件解压、压缩功能。这个类如果需要,请在博客下方留言~
方案二:控制台程序+windows定时计划
(一)配置文件内容:1、连接sqlite数据库;2、导出的xml文件,新建的压缩包的存储路径;
代码思路:
(1)查询内容到datatable中;
(2)若有内容,则先在压缩包存放路径新建一个文件夹,命名:“固定格式”-“时间戳”;
(3)xml需要从当前运行exe相对路径中复制到文件夹中,命名根据某两个字段命名
windows定时任务
Win7怎么设置定时自动执行任务
这个是导出xml并压缩功能,下一篇,解压并读取xml到postgresql
相关文章推荐
- C#定时执行某一个功能二(解压并读取xml到postgresql)
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
- [转]推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
- C#定时执行一个操作
- C#定时执行一个操作
- C# 定时执行一个方法
- 在一个form里边同时执行搜索和 execl导出功能
- C# 定时执行一个方法
- C#winForm程序定时执行某各功能--定时检查更新
- C# 启动WinRAR定时执行Web日志压缩清理
- 用C#实现的一个简单任务机,解决了一般任务机无法定时执行任务的问题
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- 功能齐全、效率一流的免费开源数据库导入导出工具(c#开发,支持SQL server、SQLite、ACCESS三种数据库),每月借此处理数据5G以上
- Asp.net 2.0 C#实现压缩/解压功能
- Asp.net 2.0 C#实现压缩/解压功能