首页 数据库 mysql教程 ruby调用Office Jet引擎压缩access数据库

ruby调用Office Jet引擎压缩access数据库

Jun 07, 2016 pm 03:50 PM
jet office ruby 压缩 引擎 调用

由于单位业务需要,搭建一台服务器专门用来做数据存储。因为数据流很小,遂采用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
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
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)

vscode怎么查看word文档 vscode查看word文档的方法 vscode怎么查看word文档 vscode查看word文档的方法 May 09, 2024 am 09:37 AM

首先,在电脑上打开vscode软件,点击左边的【Extension】(扩展)图标,如图中①所示然后,在扩展界面的搜索框中输入【officeviewer】,如图中②所示接着,从搜索结果中选择【officeviewer】安装,如图中③所示最后,打开文件,如docx,pdf等,如下图

xlsx文件手机打不开怎么办 xlsx文件手机打不开怎么办 Apr 25, 2024 am 08:28 AM

苹果手机为什么wps和excel文档打不开显示无法预览此文件1、苹果手机上无法预览WPS和Excel文档的原因是因为手机上没有安装支持这些文件格式的应用程序,解决办法有安装支持文档格式的应用程序,将文档转换为PDF格式,将文档发送到电脑或其他设备上打开。2、首先检查文件的后缀是什么,如果是excel类文件后缀却打不开,说明该文件类型未注册到电脑的文件夹选项中。3、首先,在手机上打开QQ浏览器;点击下方中间的那个按钮;点击“文件下载”;点击“文档”选择想要打开的excel文件即可。总结打开QQ浏览

WPS和Office没有中文字体,中文字体名称显示为英文 WPS和Office没有中文字体,中文字体名称显示为英文 Jun 19, 2024 am 06:56 AM

小伙伴电脑,WPS和OFFICE中字体仿宋、楷体、行楷、微软雅黑等所有中文字体都找不到,下面小编来说说如何解决这个问题。系统中字体正常,WPS字体选项中所有字体都没有,只有云字体。OFFICE只有英文字体,中文字体一个都没有。WPS安装不同版本后,英文字体有了,但同样一个中文字体都没有。解决办法:控制面板→类别→时钟、语言和区域→更改显示语言→(区域和语言)管理→(非Unicode程序的语言)更改系统区域设置→中文(简体,中国)→重启。控制面板,右上角查看方式改为“类别”,时钟、语言和区域,更改

小米平板 6 系列全量推送 PC 级 WPS Office 小米平板 6 系列全量推送 PC 级 WPS Office Apr 25, 2024 pm 09:10 PM

本站4月25日消息,小米今日官宣,小米平板6、小米平板6Pro、小米平板6Max14、小米平板6SPro现已全量支持PC级WPSOffice。其中,小米平板6Pro、小米平板6需升级系统版本为V816.0.4.0及以上,才可以在小米应用商店下载WPSOfficePC。WPSOfficePC采用了电脑同款操作和布局,搭配平板的键盘配件,可以提高办公效率。根据本站此前的评测体验,WPSOfficePC在编辑文档、表格、演示等文件时效率明显更高了。而且各种移动端使用不便的功能,诸如文字排版、图片插入、

小米平板6系列全量推送PC级WPS!电脑同款布局、操作 小米平板6系列全量推送PC级WPS!电脑同款布局、操作 Apr 25, 2024 pm 06:40 PM

4月25日消息,今日,小米平板官方宣布,小米平板6、小米平板6Pro、小米平板6Max14、小米平板6SPro现已全量支持PC级WPSOffice。据了解,小米平板6、小米平板6Pro需升级系统版本为V816.0.4.0及以上,才可以在小米应用商店下载WPSOffice。WPSOfficePCforPad拥有电脑版同款的操作和页面布局,被官方称为“在平板上实现媲美电脑版WPS的高效率。”另外,在小米澎湃OS中,小米还为小米平板带来了全新多任务系统,交互与PC窗口模式相似,官方称为自

deepseek怎么转换pdf deepseek怎么转换pdf Feb 19, 2025 pm 05:24 PM

DeepSeek 无法直接将文件转换为 PDF。根据文件类型,可以使用不同方法:常见文档(Word、Excel、PowerPoint):使用微软 Office、LibreOffice 等软件导出为 PDF。图片:使用图片查看器或图像处理软件保存为 PDF。网页:使用浏览器“打印成 PDF”功能或专用的网页转 PDF 工具。不常见格式:找到合适的转换器,将其转换为 PDF。选择合适的工具并根据实际情况制定方案至关重要。

3d渲染,电脑配置? 做设计3D渲染需要配置什么样的电脑? 3d渲染,电脑配置? 做设计3D渲染需要配置什么样的电脑? May 06, 2024 pm 06:25 PM

3d渲染,电脑配置?1电脑配置对于3D渲染非常重要,需要足够的硬件性能才能保证渲染效果和速度。23D渲染需要大量的计算和图像处理,因此需要高性能的CPU、显卡和内存。3建议配置至少一台搭载至少6核12线程的CPU、16GB以上的内存和一张高性能显卡的电脑,才能满足较高的3D渲染需求。同时,还需要注意电脑的散热和电源等方面的配置,以确保电脑的稳定运行。做设计3D渲染需要配置什么样的电脑?本人也是做设计的,给你一套配置吧(本人再用)CPU:amd960t开6核(或者1090t直接超频)内存:1333

7-zip最大压缩率设置,7zip如何压缩到最小 7-zip最大压缩率设置,7zip如何压缩到最小 Jun 18, 2024 pm 06:12 PM

发现某下载网站下载的压缩包,解压后再打包会比原来的压缩包大一些,小的几十Kb的差别,大的几十Mb的差别,如果上传到云盘或付费空间,文件少无所谓,文件多的话,大大的增加储存成本。特意研究了下,有需要的可以借鉴。压缩等级:9-极限压缩字典大小:256或384,字典越压缩越慢,256MB之前压缩率差别较大,384MB后压缩率无差别单词大小:最大273参数:f=BCJ2,测试加参数压缩率会高一些

See all articles