CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何将MDB数据转存SQL数据库中? 请各位帮忙!

楼主sjpxk(pxk)2006-10-18 10:25:11 在 Delphi / 数据库相关 提问

计算机的C盘上有个chart.mdb数据库,有个程序往里面写数据,每15分钟写一次,程序是使用独占方式打开,程序运行时chart.mdb数据库不可再打开,只能复制。  
  现想要取chart.mdb数据库里面的数据  
  如何写程序完成以下操作:  
  1、将C盘的chart.mdb数据库文件复制到D盘上,复制前判断C盘下的chart.mdb数据库文件日期时间是否是最新,若是最新则复制到D盘下,否则不复制(C盘的chart.mdb数据会增长,文件容量会比较大,现是20M)。  
  2、打开D盘下的chart.mdb数据库文件(打开前要判断下从C盘复制到D盘过程完成没有,若没有复制要再试打开),打开表chart,读取字段start_time(2006-10-18)和plan_data的当天数据,写入到SQL数据库的CHART表中start_time和plan_data字段中。 问题点数:100、回复次数:2Top

1 楼do2008(aiGooo·闲来吹吹牛,不亦乐乎)回复于 2006-10-18 11:44:50 得分 60

1.复制文件的话,简单呀,用CopyFile就可以了。  
   
  需要解决的是>>复制前判断C盘下的chart.mdb数据库文件日期时间是否是最新  
  该如何判断这个?  
   
   
  2.>>打开前要判断下从C盘复制到D盘过程完成没有,若没有复制要再试打开  
   
  其实这个判断,可以不做,你另外写一程序,用它来实现复制MDB文件,复制完成后,接着就做导入数据到SQL的工作,没有必要把复制与导入的工作,分成不同的程序来实现  
   
   
  3.>>读取字段start_time(2006-10-18)和plan_data的当天数据  
   
  需要考虑的是,MDB数据库15分钟就会被写入一次,那你的这个导入数据的程序,多久导入一次?  
   
  如果一天导入多次的话,要注意,一条记录不要重复导入多次以上,  
   
  这个是需要考虑的问题Top

2 楼smallBridge(萧秋雨)回复于 2006-10-18 15:56:19 得分 40

转贴:  
   
  SQL   Server和Access、Excel数据传输  
     
   
  一、SQLServer和Access    
   
  1、查询Access中数据的方法:    
   
  select   *   from   OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select   *   from   serv_user')    
   
  或    
   
  select   *   from   OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data   Source="c:\DB2.mdb";User   ID=Admin;Password=')...serv_user    
   
  2、从SQLServer向Access写数据:    
   
  insert   into   OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select   *   from   Accee表')    
   
  select   *   from   SQLServer表    
   
  或用BCP    
   
  master..xp_cmdshell'bcp   "serv-htjs.dbo.serv_user"   out   "c:\db3.mdb"   -c   -q   -S"."   -U"sa"   -P"sa"'    
   
  上面的区别主要是:OpenRowSet需要mdb和表存在,BCP会在不存在的时候生成该mdb    
   
  3、从Access向SQLServer写数据:有了上面的基础,这个就很简单了    
   
  insert   into   SQLServer表   select   *   from    
   
  OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select   *   from   Accee表')    
   
  或用BCP    
   
  master..xp_cmdshell'bcp   "serv-htjs.dbo.serv_user"   in   "c:\db3.mdb"   -c   -q   -S"."   -U"sa"   -P"sa"'    
   
  4、删除Access数据:    
   
  delete   from   OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select   *   from   serv_user')    
   
  where   lock=0    
   
  5、修改Access数据:    
   
  update   OpenRowSet('microsoft.jet.oledb.4.0',';database=c:\db2.mdb','select   *   from   serv_user')    
   
  set   lock=1    
   
  SQLServer和Access大致就这么多。  
   
  二、SQLServer和Excel    
   
  1、向Excel查询    
   
  select   *   from   OpenRowSet('microsoft.jet.oledb.4.0','Excel   8.0;HDR=yes;database=c:\book1.xls;','select   *   from   [Sheet1$]')   where   c   like   '%f%'    
   
  select   *   from    
   
  OPENROWSET('MICROSOFT.JET.OLEDB.4.0'    
   
  ,'Excel   5.0;HDR=YES;IMEX=2;DATABASE=c:\book1.xls',[sheet1$])    
   
  1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错    
   
  2)[]和美圆$必须要,否则M$可不认这个账    
   
  2、修改Execl    
   
  update   OpenRowSet('microsoft.jet.oledb.4.0','Excel   8.0;hdr=yes;database=c:\book1.xls;','select   *   from   [Sheet1$]')    
   
  set   a='erquan'   where   c   like   '%f%'    
   
  3、导入导出    
   
  insert   into   OpenRowSet('microsoft.jet.oledb.4.0','Excel   8.0;hdr=yes;database=c:\book1.xls;','select   *   from   [Sheet2$]')(id,name)    
   
  select   id,name   from   serv_user    
   
  或BCP    
   
  master..xp_cmdshell'bcp   "serv-htjs.dbo.serv_user"   out   "c:\book2.xls"   -c   -q   -S"."   -U"sa"   -P"sa"'    
   
  从Excel向SQLServer导入:    
   
  select   *   into   serv_user_bak    
   
  from   OpenRowSet('microsoft.jet.oledb.4.0','Excel   8.0;HDR=yes;database=c:\book1.xls;','select   *   from   [Sheet1$]')    
   
  如果表serv_user_bak不存在,则创建    
   
  有关BCP和分布式查询的详细解答,就查SQLServer自带的帮助吧。    
   
  SQLServer和txt文件、HTML文件、VFP文件的数据交换都显得非常容易了。。。。    
   
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:sjpxk
  • do2008
  • smallBridge

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo