首頁 資料庫 mysql教程 《万能数据库查询分析器》实现使用SQL语句直接高效地访问文本文

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

Jun 07, 2016 pm 03:57 PM
sql 使用 實現 語句 高效率

《万能数据库查询分析器》实现使用 SQL 语句直接高效地访问文本文件 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 用SQL语句来直接访问文本文件?是在做梦吗? 本文详细地介绍了万能数据库查询分析器,中文版本《DB 查询分析器》、英文版本《DB


《万能数据库查询分析器》实现使用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上搜索关键字"万能数据库查询分析器",搜索结果达318万。在Baidu上搜索关键字"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个文件。

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

输出结果:要回传的流水号并按照区域分成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 单核

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

后台文件: .TXT/.CSV

\

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

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

图5 登录odbc_txt_csv,不用输入用户名和口令

\

图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)

union all

select *

FROM [流水小于0.csv]

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

) w

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

 

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

where ( (b.CASHMONEY+b.ETCMONEY)

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)

union all

select *

FROM [流水小于0.csv]

where (备注='只管理点存在') and 回送标志='回送' and(cashmoney+etcmoney)

) w

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

 

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

where ((b.CASHMONEY+b.ETCMONEY)

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

) www

where roadno in (select roadno from [tb_road.txt] where areano=4407)

 

\

图9 一开始执行图8中的SQL语句时,本机CPU使用率立刻攀升至97%

 

\

图10 生成中片区需要回传的流水文件,共有6万多条记录\

图11 从结算中心数据库中用挖掘生成的所有忽略的流水,两个文件共250多万条记录

结论:

对于“交互式”这种数据处理的方式来说,将结果导出,用《DB 查询分析器》的强大、高效的文本文件的处理功能来分析处理,也是一种不错的选择。并且《DB 查询分析器》的效率非常之高、处理非常方便,可以将源文件当成一个数据库中的数据表一样用标准SQL语句来进行访问。

本人的PC机只不过内存1GB的2005年的DELL 台式PC机,对250万条记录的文件进行关联访问的时候,也只是用不到59秒的时间就生成了一个区域的结果文件,期间CPU使用率高达97% 。

5 本人撰写的关于“万能数据库查询分析器”的64 篇技术文章

目前以下6篇文章发布几个国内计算机刊物上:

[1] 马根峰· DB QueryAnalyzer中断SQL语句的执行 · 杭州:《计算机时代》,2011年第12期

[2] 马根峰· DB查询分析器 批量执行DML语句并返回更详细的信息 · 北京:《电脑编程技巧与维护》,2011年第24期

[3] 马根峰· DBQuery Analyzer中的事务管理在DB2中的应用 · 北京:《电脑编程技巧与维护》,2011年第22期

[4] 马根峰· DB查询分析器中断SQL语句的执行· 天津:《软件》,2011年第6期

[5] 马根峰· 万能数据库查询分析器中的事务管理在Oracle中的应用 · 上海:《微型电脑应用》,2011年第11期

[6] 马根峰 · 新产品&工具点评 特别推荐:“万能数据库查询分析器”发布 · 程序员,2007年2期

以下58篇文章发布在百度文库、CSDN资源、和本人的四大博客上:

《万能数据库查询分析器使用技巧之(一)》直到《万能数据库查询分析器使用技巧之(十三)》共13篇

《The 1st tip ofDB Query Analyze》直到《The 13th skills of DB Query Analyzer》共13篇

《如何在客户端配置ODBC来访问远程DB2 for Windows服务器》

《How to configure ODBC DSN in Client toaccess remote DB2 for Windows》

《如何在服务器上配置ODBC来访问本机DB2 forWindows服务器》

《How to configure ODBC DSN to access localDB2 for Windows》

《软件开发顶尖高手的杀手锏SQL语句》

《Which SQL statement is the trump card tothe senior software developer》

《DB 查询分析器批量执行DML语句并返回更详细的信息》

《用“万能数据库查询分析器”测试SQLite对4大SQL精髓语句的支持》

《用“DB查询分析器”的对象浏览器来展现数据库的数据字典》

《万能数据库查询分析器用户已基本涵盖当前所有数据库系统》

《The DBMS that DB Query Analyzer Users oftenuse cover all kinds of DBMS》

《查询分析器应必须具备的功能-中断查询的执行》

《万能数据库查询分析器的EXE文件加壳技术》

《Exe packer prevent DB Query Analyzer frombeging debugged》

《自己开发的“万能数据库查询分析器”终于有了较大的成果》

《DB Query Analyzer中断SQL语句的执行》

《DB 查询分析器 批量执行DML语句并返回更详细的信息》

《DB Query Analyzer中的事务管理在DB2中的应用》

《DB 查询分析器中断SQL语句的执行》

《万能数据库查询分析器中的事务管理在Oracle中的应用》

《特别推荐:“万能数据库查询分析器”发布》

《软件开发高手须掌握的4大SQL精髓语句(一)》

《软件开发高手须掌握的4大SQL精髓语句(二)》

《软件开发高手须掌握的4大SQL精髓语句(三)》

《软件开发高手须掌握的4大SQL精髓语句(四)》

《软件开发高手须掌握的4大SQL精髓语句(综合篇)》

《巅峰之作----“万能数据库查询分析器”5.01发布》

《万能数据库查询分析器与EXCEL强强联合进行数据分析》

《DB 查询分析器批量执行多条SQL语句并查看各自的执行时间》

《DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号》

《The table name must be enclosed in double quotation marks or sqarebracket while accessing EXCEL by DB Query Analyzer》

《基于数据仓库星形模式的广东省高速公路一张网资金结算情况分析系统》

DB查询分析器 5.04 中关村在线下载地址:

http://xiazai.zol.com.cn/detail/27/264455.shtml

DBQuery Analyzer 5.04中关村在线下载地址:

http://xiazai.zol.com.cn/detail/43/420901.shtml

备注:

如果您的计算机上安装有“万能数据库查询分析器”以前的版本,请先将旧版本 Uninstall,然后再安装新版本,谢谢!

作者简介:

马根峰,硕士,研究方向:数据库应用。

个人开发了万能数据库查询分析器,中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》。它具有强大的功能、友好的操作界面、良好的操作性、跨越各种数据库平台乃至于EXCEL和文本文件。

个人还开发了彻底删除文件(File Delete Absolutely),用以将Windows系统上的文件彻底删除,不会被其它软件恢复。

这两个软件均免费使用,在各内几大软件下载网站中关村在线、天空软件站、华军软件园、太平洋电脑、非凡软件站、绿色联盟等均有下载。

作者博客:

CSDN博客:http://blog.csdn.net/magenfeng

新浪博客: http://blog.sina.com.cn/magenfeng

QQ空间: http://user.qzone.qq.com/630414817

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
Hibernate 框架中 HQL 和 SQL 的差異是什麼? Hibernate 框架中 HQL 和 SQL 的差異是什麼? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? BTCC教學:如何在BTCC交易所綁定使用MetaMask錢包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸錢包)是一款免費的、廣受好評的加密錢包軟體。目前,BTCC已支援綁定MetaMask錢包,綁定後可使用MetaMask錢包進行快速登錄,儲值、買幣等,且首次綁定還可獲得20USDT體驗金。在BTCCMetaMask錢包教學中,我們將詳細介紹如何註冊和使用MetaMask,以及如何在BTCC綁定並使用小狐狸錢包。 MetaMask錢包是什麼? MetaMask小狐狸錢包擁有超過3,000萬用戶,是當今最受歡迎的加密貨幣錢包之一。它可免費使用,可作為擴充功能安裝在網絡

網易信箱大師怎麼用 網易信箱大師怎麼用 Mar 27, 2024 pm 05:32 PM

網易郵箱,作為中國網友廣泛使用的一種電子郵箱,一直以來以其穩定、高效的服務贏得了用戶的信賴。而網易信箱大師,則是專為手機使用者打造的信箱軟體,它大大簡化了郵件的收發流程,讓我們的郵件處理變得更加便利。那麼網易信箱大師該如何使用,具體又有哪些功能呢,下文中本站小編將為大家帶來詳細的內容介紹,希望能幫助到大家!首先,您可以在手機應用程式商店搜尋並下載網易信箱大師應用程式。在應用寶或百度手機助手中搜尋“網易郵箱大師”,然後按照提示進行安裝即可。下載安裝完成後,我們打開網易郵箱帳號並進行登錄,登入介面如下圖所示

百度網盤app怎麼用 百度網盤app怎麼用 Mar 27, 2024 pm 06:46 PM

在如今雲端儲存已成為我們日常生活和工作中不可或缺的一部分。百度網盤作為國內領先的雲端儲存服務之一,憑藉其強大的儲存功能、高效的傳輸速度以及便捷的操作體驗,贏得了廣大用戶的青睞。而且無論你是想要備份重要文件、分享資料,還是在線上觀看影片、聽取音樂,百度網盤都能滿足你的需求。但很多用戶可能對百度網盤app的具體使用方法還不了解,那麼這篇教學就將為大家詳細介紹百度網盤app如何使用,還有疑惑的用戶們就快來跟著本文詳細了解一下吧!百度雲網盤怎麼用:一、安裝首先,下載並安裝百度雲軟體時,請選擇自訂安裝選

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

小米汽車app怎麼用 小米汽車app怎麼用 Apr 01, 2024 pm 09:19 PM

小米汽車軟體提供遠端車控功能,讓使用者可以透過手機或電腦遠端控制車輛,例如開關車輛的門窗、啟動引擎、控制車輛的空調和音響等,下文就是這個軟體的使用及內容,一起了解下吧。小米汽車app功能及使用方法大全1、小米汽車app在3月25日上線蘋果AppStore,現在安卓手機的應用商店中也可以下載了;購車:了解小米汽車核心亮點和技術參數,可預約試駕、配置訂購您的小米汽車,支援線上處理提車待辦事項。 3.社群:了解小米汽車品牌資訊,交流用車體驗,分享精彩車生活;4、車控:手機就是遙控器,遠端控制,即時安防,輕

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

如何正確地在 Go 語言中使用空格 如何正確地在 Go 語言中使用空格 Mar 29, 2024 pm 03:42 PM

Go語言是一種簡單、有效率、並發性強的程式語言,它是由Google開發的開源語言。在Go語言中,空格的使用是非常重要的,它能夠提高程式碼的可讀性和易於維護性。本文將介紹如何正確地在Go語言中使用空格,並提供具體的程式碼範例。為什麼需要正確使用空格在程式設計過程中,空格的使用對於程式碼的可讀性和美觀性非常重要。恰當地使用空格可以讓程式碼更加清晰、易讀,從而減

See all articles