由于单位业务需要,搭建一台服务器专门用来做数据存储。因为数据流很小,遂采用access库作为DB。开始还好,但是后来发现access数据库有一问题,就是表空间会随着使用越来越大,哪怕表里没有数据。因为表中单次存放的内容是很小的,每隔几分钟会全删除然后再
由于单位业务需要,搭建一台服务器专门用来做数据存储。因为数据流很小,遂采用access库作为DB。开始还好,但是后来发现access数据库有一问题,就是表空间会随着使用越来越大,哪怕表里没有数据。因为表中单次存放的内容是很小的,每隔几分钟会全删除然后再写入,所以表也会越来越大啊!
开始是用VB写的一个压缩软件,因为是M$自家的语言嘛,自然对Office系列支持很好,后来发现ruby中也可以通过Win32ole访问Jet引擎,为何不用ruby来写呢?因为是以前写的代码神马都用class来搞,稍显夸大,但效果还好。
#hb table write by hopy 2012 require 'win32ole' require 'oci8' class Hb def initialize @oci = OCI8.new("xxx","***","xxx") end def open unless @acs conn_str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=#{Dir.pwd}/hb.mdb" #conn_str = "driver={SQL Server};database=xxx;server=localhost,1433;uid=sa;pwd=sa" @acs = WIN32OLE.new('ADODB.Connection') @acs.Open(conn_str) end end def close (@acs.Close;@acs=nil) if @acs end def cls self.open sql = "DELETE * from InTable";@acs.Execute(sql) sql = "DELETE * from OutTable";@acs.Execute(sql) end def zip start = Time.now self.close jet = WIN32OLE.new('JRO.JetEngine') path = Dir.pwd+"/hb.mdb" new_path=Dir.pwd+"/hb_ziped.mdb" File.delete(new_path) if File.exist?(new_path) sp = "Provider=Microsoft.Jet.OLEDB.4.0" ss = sp+";Data Source="+path sd = sp+";Data Source="+new_path jet.CompactDatabase(ss,sd) File.delete(path) File.rename(new_path,path) puts "access ziped , take #{Time.now - start} s" end def sync self.cls self.open zb = [64981,57520] i = 0;start = Time.now ret = @oci.exec('select * from DBO.DPXS_ARRIVAL') do |r| next if r[7].unpack("v*") != zb zt = if r[24] == "Arrived" r[23] elsif r[25] r[25] else r[23] end tm = if r[12] r[12] elsif r[11] r[11] else r[10] end @acs.Execute("INSERT INTO InTable VALUES('#{r[0]}','#{tm}','#{r[13]}','#{zt}')");i+=1 end <span style="white-space:pre"> </span>puts "sync #{i} arrival flights , take #{Time.now - start} s" i = 0;start = Time.now ret = @oci.exec('select * from DBO.DPXS_DEPARTURE') do |r| next if r[7].unpack("v*") != zb tm = if r[13] r[13] elsif r[12] r[12] else r[11] end @acs.Execute("INSERT INTO OutTable VALUES('#{r[0]}','#{tm}','#{r[14]}','#{r[27]}')");i+=1 end puts "sync #{i} departure flights , take #{Time.now - start} s" end end INTERVAL_sec = 10 hb = Hb.new t = 0 loop do sleep(INTERVAL_sec);t+=INTERVAL_sec hb.sync (hb.zip;t=0) if t >= 60 #t=0 if t >= 60 end

如何使用Python调用百度地图API实现地理位置查询功能?随着互联网的发展,地理位置信息的获取和利用越来越重要。百度地图是一款非常常见和实用的地图应用,它提供了丰富的地理位置查询服务。本文将介绍如何使用Python调用百度地图API实现地理位置查询功能,并附上代码示例。申请百度地图开发者账号和应用首先,你需要拥有一个百度地图开发者账号,并创建一个应用。登录

楔子我们知道对象被创建,主要有两种方式,一种是通过Python/CAPI,另一种是通过调用类型对象。对于内置类型的实例对象而言,这两种方式都是支持的,比如列表,我们即可以通过[]创建,也可以通过list(),前者是Python/CAPI,后者是调用类型对象。但对于自定义类的实例对象而言,我们只能通过调用类型对象的方式来创建。而一个对象如果可以被调用,那么这个对象就是callable,否则就不是callable。而决定一个对象是不是callable,就取决于其对应的类型对象中是否定义了某个方法。如

PHP摄像头调用技巧:如何实现多摄像头切换摄像头应用已经成为许多Web应用的重要组成部分,例如视频会议、实时监控等等。在PHP中,我们可以使用各种技术来实现对摄像头的调用和操作。本文将重点介绍如何实现多摄像头的切换,并提供一些示例代码来帮助读者更好地理解。摄像头调用基础在PHP中,我们可以通过调用JavaScript的API来实现摄像头的调用。具体来说,我们

如何通过Python编程调用百度地图API实现地图展示功能?随着互联网的快速发展,地图应用成为了我们生活中不可或缺的一部分。而百度地图作为国内最大的地图应用之一,为我们提供了丰富的服务和API接口,可以很方便地实现地图展示功能。本文将介绍如何通过Python编程调用百度地图API来实现地图展示功能,并给出相应的代码示例。首先,我们需要在百度开放平台上注册一个

许多人也许会注意到一个现象,那就是在一些现代编程语言(当然,并不是指“最近出现”的编程语言)中,自增和自减运算符被取消了。也就是说,在这些语言中不存在i++或j--这样的表达,而是只存在i+=1或j-=1这样的表达方式了。本回答将从设计哲学这个角度上探讨这一现象产生的背景与原因。严格来说,说"i++正在消失"也许有失偏颇,因为主流编程语言中似乎只有Python、Rust和Swift不支持自增自减运算符。当我第一次接触Python时,这也

Go与Ruby的主要区别在于:Go是一种静态类型编译语言,支持轻量级并行和高效内存管理,适合编写高并发应用程序;Ruby是一种动态类型解释语言,支持真正的并行但内存管理需手动控制,适合编写灵活的Web应用程序。

Ruby操作MySQL使用mysql2连接mysql并操作mysql。geminstallmysql2连接mysql建立连接:require'mysql2'conn=Mysql2::Client.new({host:'192.168.200.73',username:'root',password:'P@ssword1!'})接受的连接选项包括:Mysql2::Clie

如何使用MySQL和Ruby实现一个简单的数据分析报表功能引言:在当今数据驱动的时代,数据分析对于企业的决策和发展起到了至关重要的作用。而数据分析报表作为数据分析的重要组成部分,对于对数据进行整理、可视化和解读具有重要意义。本文将介绍如何使用MySQL和Ruby来实现一个简单的数据分析报表功能,并提供相应的代码示例。一、数据库设计与建表要实现数据分析报表功能


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),
