问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

如何用SQL 语句读取文本文件内容

发布网友 发布时间:2022-05-02 01:22

我来回答

3个回答

懂视网 时间:2022-05-02 05:43


《万能数据库查询分析器》实现使用SQL语句直接高效地訪问文本文件

                           马根峰

                (广东联合电子服务股份有限公司, 广州 510300)

 

摘要    用SQL语句来直接訪问文本文件?是在做梦吗?

本文具体地介绍了“万能数据库查询分析器”,中文版本号《DB 查询分析器》、英文版本号《DB Query Analyzer》在 文本文件处理方面很强大的功能,你能够直接用SQL语句来訪问这些文本文件,訪问250万条记录的文件的复杂的关联操作,也只是用时59秒钟。须要注意的是,文本文件的第一行须要有列名。

关键词   DB 查询分析器;DB Query Analyzer 

 

 

1       引言  

中国本土程序猿马根峰推出的个人作品----万能数据库查询分析器,中文版本号《DB 查询分析器》、英文版本号《DB Query Analyzer》。

万能数据库查询分析器集哈希技术、链表等多种数据结构于一体。使用先进系统开发技术,经历4年的研究、开发、測试周期后在2006年面世。

之后7年来一直在进行不断地完好、升级,到眼下为止。最新版本号为5.04 。“万能数据库查询分析器”核心部分就具有长达5万多行代码的工作量,使得其具有强大的功能、友好的操作界面、良好的操作性、跨越各种数据库平台乃至于EXCEL和文本文件。

你能够通过它查询ODBC数据源(包含世面上全部的数据库、TXT/CSV文件、EXCEL文件)的数据。你能够同一时候运行多条DML语句乃至存贮过程。结果会以你设定的表格、文本框、文件来返回。从数据库导出千万条数据时,效率与DBMS没有什么差别。

本文将以5.04版本号为例,具体阐述“万能数据库查询分析器”中文版本号《DB 查询分析器》在 文本文件 处理方面很强大的功能,你能够直接用SQL语句来訪问这些文本文件,訪问250万条记录的文件的复杂的关联操作,也只是用时59秒钟。要注意的是,文本文件的第一行须要有列名。

 
 

2    产品获得的成就及发展历程  

中文版本号《DB 查询分析器》在中关村在线 下载量超过10万 多次,位居整个数据库类排行榜中前20位。

在《程序猿》2007第2期的“新产品&工具点评”部分,编辑“特别推荐”了“万能数据库查询分析器”公布。本期仅仅点评了5个工具。各自是“Adobe Acrobat 8 中文版”、“迅雷搜索 1.7 新版上线”、“Google 桌面搜索 5.0 中文公布”、“BEA 公布 WebLogic SIPServer 3.0”和特别推荐“万能数据库查询分析器”公布。前面4个都是国内外大型软件公司的产品,仅仅有“万能数据库查询分析器”是个人创作的软件。

截止到2013年4月17日,在Baidu上搜索keyword"万能数据库查询分析器",搜索结果达318万。在Baidu上搜索keyword"DB查询分析器"、"DBQuery Analyzer",搜索结果分别在104万、16万左右。在Google上搜索“DB 查询分析器”、“DBQuery Analyzer”。结果分别达104万、44万之多。

本人撰写了关于“万能数据库查询分析器”有关技术的64篇文章,公布在《电脑编程技巧与维护》、《软件》、《计算机时代》、《电脑编程技巧与维护》、百度文库、CSDN资源、和本人的四大博客上(CSDN博客、新浪博客、QQ空间和搜狐博客上)。

 

 

3   为何用《DB 查询分析器》来訪问文本文件来解决实际问题

在广东联合电子服务股份有限公司实施一张网的过程中,因为路段上传的流水存在大量的异常,导致依照正常的结算流程无法快速地进行路段的结算。

因此,为了进行及时的结算,广东省快速公路公司授权先将异常流水进行忽略。后期再将这些流水进行上传、改动、拆分结算。

近期,为了实施忽略流水的回传。本人做的第一步就是从忽略的流水中依照(流水仅仅有在管理点存在、中心和管理点都存在)这两种情况。再依照流水金额小于0、等于0、大于0三类进行统计成台账(6个文件),然后业务组,再从这些分类批次(6个文件)中确认哪些批次须要回传(形成2 个文件。 流水大于0.csv 和 流水小于0.csv )。

最终,本人还要依据这些这两个文件里是否“回传”,再从结算系统中依据复杂的逻辑,找出要回传的流水号并依照区域分成4个文件。

在本次处理中,

源处理文件:流水大于0.csv 、 流水小于0.csv 、tb_road、 管理点存在中心不存在的流水_全部.txt 和 管理点与中心都存在的部分_全部.txt 这5个文件。

后两个文件是从结算系统数据库server中通过复杂的逻辑处理生成的中间结果文件。

输出结果:要回传的流水号并依照区域分成4个文件。

 

解决方式:因此,输入条件决定要么在结算数据库系统中建立 数据表 来完毕条件的推断;要么将结果全部忽略的流水、须要关联的数据表(tb_road)导出成.CSV/.TXT 文件,再使用《DB 查询分析器》强大、高效的.CSV/.TXT 訪问功能来实施整个回传流水文件的生成。




 技术分享
 

      tb_road 表仅仅是从生产机数据库中导出tb_road表即可了。

 


技术分享

图2  数据挖掘生成文本文件“管理点与中心都存在部分_全部.txt”

 

 

4    5.04中文版本号《DB 查询分析器》为例  

       下面我们就以“万能数据库查询分析器”的中文版本号《DB 查询分析器》 5.04为例,以Windows 2000Server操作系统为平台,先创建基于文件夹 “D:ODBC_TXT_CSV”中 .TXT/.CSV 文件的ODBC数据源 “odbc_txt_csv”,然后再通过 DB 查询分析器 5.04来訪问这些文件夹下的文件。

     操作系统: Windows2000 Server操作系统

     CPU:2.8 GHZ 单核
   内存:1GB

     前台程序: DB 查询分析器 5.04

     后台文件: .TXT/.CSV


技术分享

图3  创建基于 .CSV/.TXT 文件的ODBC数据源(一)

 


技术分享

图4  创建基于 .CSV/.TXT 文件的ODBC数据源(二)


技术分享

图5  登录odbc_txt_csv。不用输入username和口令

 

技术分享

图6  对象浏览器来查看数据源 odbc_txt_csv


技术分享

图7 Windows资源管理器中,ODBC数据源odbc_txt_csv相应的文件夹下全部的文件

 

技术分享

图8  用SQL语句来訪问 .txt和 .csv文件,来生成各区域须要回传的流水

 

图8中的复杂的SQL语句例如以下:

 

select listno,‘2014-06-16‘

from

(

    select distinct b.LISTNO,b.roadno

    --select count(*) asrec_num,sum(b.CASHMONEY)/100 as CASHMONEY,sum(b.ETCMONEY)/100 as ETCMONEY

    from

    ( 

        selectw.roadno,w.squaddate,w.roadname,w.outvehclass,

               sum(w.rec_count) as rec_count1,sum(w.cashmoney) as cashmoney1,sum(w.etcmoney) as etcmoney1

        from

        (

           select *

           FROM  [流水大于0.csv] 

           where (备注 is null) and 回送标志=‘回送‘ and(cashmoney+etcmoney)<0

           union all

           select *

           FROM  [流水小于0.csv] 

           where (备注 is null) and 回送标志=‘回送‘ and(cashmoney+etcmoney)<0

        ) w

        group byw.roadno,w.squaddate,w.roadname,w.outvehclass

   

    ) a,[管理点与中心都存在部分_全部.txt] b

    where  ( (b.CASHMONEY+b.ETCMONEY)<0 ) and a.roadno=b.roadno anda.SQUADDATE=b.SQUADDATE

          anda.OUTVEHCLASS=b.OUTVEHCLASSNAME

    union

    select distinct b.LISTNO,b.roadno

    --select count(*) asrec_num,sum(b.CASHMONEY)/100 as CASHMONEY,sum(b.ETCMONEY)/100 as ETCMONEY

    from

    ( 

        selectw.roadno,w.squaddate,w.roadname,w.outvehclass,

               sum(w.rec_count) as rec_count1,sum(w.cashmoney) as cashmoney1,sum(w.etcmoney) as etcmoney1

        from

        (

           select *

           FROM  [流水大于0.csv] 

           where (备注 is null) and 回送标志=‘回送‘ and(cashmoney+etcmoney)>0

           union all

           select *

           FROM  [流水小于0.csv] 

           where (备注 is null) and 回送标志=‘回送‘ and(cashmoney+etcmoney)>0

        ) w

        group byw.roadno,w.squaddate,w.roadname,w.outvehclass

   

    ) a,[管理点与中心都存在部分_全部.txt] b

    where  ( (b.CASHMONEY+b.ETCMONEY)>0 ) and a.roadno=b.roadno anda.SQUADDATE=b.SQUADDATE

          anda.OUTVEHCLASS=b.OUTVEHCLASSNAME  

    union

    select distinct b.LISTNO,b.roadno

    --select count(*) asrec_num,sum(b.CASHMONEY)/100 as CASHMONEY,sum(b.ETCMONEY)/100 as ETCMONEY

    from

    ( 

        selectw.roadno,w.squaddate,w.roadname,w.outvehclass,

               sum(w.rec_count) as rec_count1,sum(w.cashmoney) as cashmoney1,sum(w.etcmoney) as etcmoney1

        from

        (

           select *

           FROM  [流水大于0.csv] 

           where (备注=‘仅仅管理点存在‘) and 回送标志=‘回送‘ and(cashmoney+etcmoney)<0

           union all

           select *

           FROM  [流水小于0.csv] 

           where (备注=‘仅仅管理点存在‘) and 回送标志=‘回送‘ and(cashmoney+etcmoney)<0

        ) w

        group byw.roadno,w.squaddate,w.roadname,w.outvehclass

   

    )  a,[管理点存在中心不存在的流水_全部.txt] b

    where ((b.CASHMONEY+b.ETCMONEY)<0 ) and a.roadno=b.roadno anda.SQUADDATE=b.SQUADDATE

          anda.OUTVEHCLASS=b.OUTVEHCLASSNAME

    union

    select distinct b.LISTNO,b.roadno

    --select count(*) asrec_num,sum(b.CASHMONEY)/100 as CASHMONEY,sum(b.ETCMONEY)/100 as ETCMONEY

    from

    ( 

        selectw.roadno,w.squaddate,w.roadname,w.outvehclass,

               sum(w.rec_count) as rec_count1,sum(w.cashmoney) as cashmoney1,sum(w.etcmoney) as etcmoney1

        from

热心网友 时间:2022-05-02 02:51

ResultSet rs = Statemnet.excuteQuery(); List list1 = new ArrayList(); List list2 = new ArrayList(); while(rs.hasnext()){ list1.add(rs.next.getString(0)); list2.add(rs.next.getString(1)); } 然后可以再遍历这些集合输出出去。

热心网友 时间:2022-05-02 04:09

写个脚本吧,或者写个C程序做中转也可以
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
张德维人物简介 王老师买了1本单价是2.8元的笔记本和2本相同定价的童话书,共用去22.6... 有人知道哪儿可以找到有关公示语(Public Signs)的书籍吗? 牙疼快速止疼偏方 治疗不同人群牙疼的偏方 谁有快速治牙疼的小偏方? 牙疼怎么办?不可不知的六个立即止疼小偏方 羊脸怎么做不膻 怎么做羊脸不膻 变更股东印花税缴纳 周杰伦演唱会南宁站门票多少钱? 有谁知道周杰伦南宁演唱会场广西区体育场的座位安排!! 蛇,泥鳅,鳝鱼和龙是近亲吗? 泥鳅是龙的后代吗 大家有听到这个故事吗,有知道的告诉我,好像是一个泥鳅花了500年时间变成鱼,失败了会变成泥鳅,你 龙起源于哪个时期,古人绘制龙参考的是哪种动物? 关于勤奋刻苦、自强不息的名言警句 梦到泥鳅变身小龙叼着食物去供养比它更高级的龙,请问什么寓意? 你是一条鲤鱼,修行500年跳了龙门变成龙了,而我原来只是一条泥鳅,先*1000年变成了鲤鱼 ,然 有一场电影讲的是一个小女孩养了一只泥鳅,怕父母见到她把泥鳅藏在门后,泥鳅长大后变成了龙缠绕高楼, 有关于自强的生活名言警句!尽快!!! 有关自强不息的名言警句 自强不息的名言警句 有关自强自立的名言警句或格言 自立自强的名言警句 孩子幼儿园毕业送孩子什么礼物好呢 plc程序怎么删除 有关自强自立的名言警句或格言有哪些? 关于自立自强的名言警句 请问文蛤,白蛤怎么做出好喝得汤呢,简单一点啊谢谢了 养白蛤喇的水卤度是多少 好吃的白蛤虾仁枸杞叶汤怎么做好吃又简单,做法图解分 机动车违章后多久可以在网上查到 天龙2全身转的大龙要怎么搞出来,别跟我说买游龙,那个只能算泥鳅 龙的原型是什么? 我的妈妈作文总分总结构 女性梦见泥鳅像龙有金色的尾巴 人际关系问题!!!求高人!!有重谢!!! 我和男朋友交往了三年,他家里是做买卖的,我家里父亲是局长,妈妈是 违章什么时候在网上能查到 我是六安市人,五月十二号我的母亲被方*带领*门的人拳打脚踢。可怜的母亲被打晕了。 找一部小说,那种小说,男主母亲是**,大姨是*委*,还有个姐姐,父亲也是个当官的姓王(不 我和我女朋友家庭条件相差太大了,女友是正式老师,女友爸爸是县里的*,妈妈高中老师 U盘做系统哪个好 上个月*到我家做客,我们*看我妻子漂亮贤惠就对我说,今晚让我妻子到他家里给他做到菜,只要做的菜 通过课文第几段我认识到长妈妈是一个什么人? 热水器有个不知名的出口在滴水是什么原因? 约克和特灵中央空调哪个好 特灵中央空调A,B两个系统显示数字什么意思? 格力*空调和美国特灵*空调哪个好?他们的优势和不足有哪些 问一下各位大佬,微信除了面对面建群之外有面对面加群吗? 如何使用SQL语句将数据导入到TXT文本文件中
  • 焦点

最新推荐

猜你喜欢

热门推荐