Foxpro DBF数据库转换成SQL Server 6.5表的几种方法_第1页
Foxpro DBF数据库转换成SQL Server 6.5表的几种方法_第2页
Foxpro DBF数据库转换成SQL Server 6.5表的几种方法_第3页
Foxpro DBF数据库转换成SQL Server 6.5表的几种方法_第4页
Foxpro DBF数据库转换成SQL Server 6.5表的几种方法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Foxpro DBF数据库转换成SQL Server 6.5表的几种方法摘要:本文主要介绍用SQLServerbp、Fxpr编程、Aess等方法将.dbf数据库转换到SQLServer表的方法。关键词:XbaseDBFSQLServer数据库转换1、前言当今,数据库联网实现数据共享已经成为信息系统建设中一个迅速发展的潮流。利用SQLServer、raal、Sybase等客户机/服务器(lient/Server)体系结构的数据库系统进行信息系统的开发、更新改造已成为当前一大趋势。而Dbase、Fxbase、Fxpr是我国近年应用较为广泛的数据库开发软件,许多单位、部门多年来积累了大量的宝贵的数据

2、资料,这些部门在进行计算机信息系统改造、更新的同时,面临如何继承大量历史数据的问题,本文介绍三种将DBF数据转换成SQLServer表的方法。2、利用SQLServer所提供的块拷贝实用程序(bp)转换实用程序bp.exe可从服务器SQL目录下的BINN子目录下获得。2.1、bp的命令格式及主要参数bpdatabase_nae.ner.table_naein|utdatafile/axerrr/ffratfile/eerrfile/n/tfield_ter/rr_ter/Ulgin_ID/Ppassrd/Sservernae/vversin/apaket_size主要参数:database_n

3、ae数据库名in|utin从文件到数据库表的拷贝。ut从数据库表到文件拷贝。datafile操作系统文件的路径。该路径的长度可以是1255个字符。也可指明磁盘驱动器名字。/用字符类型作为缺省值执行拷贝操作。/ulgin_ID指定登录标识符。/Ppassrd允许指定一个口令。/Sservernae允许用户指定连接到哪个SQLServer2.2、实现转换的具体方法我们以Fxpr的数据库结构的单位职工库(zg.dbf)为例,进行数据转换。其数据结构为:字段名类型字段长度小数点位数字段内容bh4职工编号x8职工姓名xb2性别nlN20年龄z10职务gzsjD参加工作时间jl简历zpG照片实现步骤:(1

4、)、启动服务器,进入indNT,SQLServer6.0,打开SQLEnterpriseanager为单位职工库创建一个数据库设备zg.dat,然后在该设备上建立zg数据库及表(Table),表的数据结构要与zg.dbf的数据结构一致。或用以下SQLServer命令创建设备和创建表。A、创建数据设备diskinitnae=zg数据库设备名physnae=:zgzg.dat数据库文件所在路径vdevn=8数据库设备的标识号size=5120数据库设备大小(10)B、建立zg表reatedatabasezg_datanzg=1024,lgnzg=1024建立数据库usezg_datareateta

5、blezg(bhhar(4)null,xhar(8)null,xbhar(2)null,nlintnull,zhar(10)null,gzsjdatatienull,jltextnull,zpiagenull)建立表g(2)、在客户机上启动Fxpr,用USE命令打开需转换的.dbf文件,用PY命令将.dbf文件中数据转换成标准的文本文件.txt,命令如下:usezg.dbfpyalltzg.txtdeliithblan(3)、从客户机登录到indsNT服务器上,将zg.txt文件拷贝到服务器的职工库目录:zg下。(4)、在服务器上,由indsNT进入到S-DS状态,然后执行bp将数据从zg.t

6、xt转换到SQL表,命令格式如下:bpzginzg.txt/sainserver/uanager/P0001(ainserver为服务器名,anager为用户名,0001为用户口令)。该转换方法速度较快,不占用服务器上事务日志空间。但较为复杂、繁锁,操作者必须熟练掌握Fxpr、SQLServer的命令和操作,而且无法将Fxpr的e、General字段转换到SQLServer表。3、用Fxprfrind2.5编程实现转换用Fxpr编程实现数据转换即通过SQLServer提供的DB接口(开放数据库接口)及Fxpr提供DB接口工具nnetivityKit(fpsql.fll),建立SQL与Fxpr的

7、连接,由Fxpr向SQLServer提交创建表命令,然后将.dbf的每条记录,串成一个字符串,将插入命令连同字符串提交给SQLServer,完成数据转换。实现步骤:(1)、DB的设置:在客户机上启动indsfrgrup,进入inds的控制面板(ntrlpanel)。双击DB图标,进行zg数据库的DB驱动设置。选择Add增加新的DB驱动接口,在InstallDBdrivers项选择SQLServer,按K,弹出DBSQLServerSetup窗口,在Datasurenae项中输入zg_data,Server项输入ainserver,按K完成设置。(2)、采用上述方法一中步骤1的、创建zg数据库设

8、备及数据库,然后执行Fxpr程序rea_table,创建一个结构与.dbf结构相同的SQLServer表。程序清单如下:rea_table.prg程序清单settalkfflsealllearalllearstretdbf_naedbf_nae待转换的.dbf数据库stretsql_dbsql_db目的SQL数据库stretsql_sql_向SQLServer提交的命令stretsql_titlesql_title为向SQLServer提交命令字头stre0thandlehandle为Fxpr与SQLServer连接的标识stre0tsuesssuess为命令提交成功与否的标识setlibrt

9、fpsql.fll2,20say请输入要转换的数据库(dbf)名:getdbf_nae3,20say请输入目的SQL数据库名:getsql_dbreaddbf_nae=allt(dbf_nae)sql_db=allt(sql_db)handle=dbnnet(sql_db,sa,)建立Fxpr与SQLServer连接ifhandle0若连接成功则usedbf_naeasp_dbfin0以p_dbf为别名打开待转换数据库selep_dbfpytdb_strustruexte将其数据结构拷贝生成db_stru库usedb_struin0seledb_strugttpsql_=reattable+d

10、bf_nae+(dhile.nt.ef()sql_=sql_+field_nae+daseasefield_type=sql_=sql_+har(+;allt(str(field_len)+)asefield_type=Niffield_de=0iffield_len8sql_=sql_+intelsesql_=aql_+flatendifelsesql_=sql_+flatendifasefield_type=Dsql_=sql_+datatieasefield_type=sql_=sql_+textasefield_type=Gsql_=sql_+binaryendaseskipif.nt

11、.ef()sql_=sql_+,endifenddsql_=aql_+)suess=dbexe(handle,sql_)ifsuessaitindSQLServer表已建立成功!elseaitindSQLServer表建立失败!endiflsealllearallretuelse若连接不成功aitind对不起,输入参数错误,无法连接SQLServerlearreadretuendif(3)、再执行Fxpr程序nv_data将数据由.dbf传输到SQLServer表中。nv_data.prg程序清单nv_data.prg程序清单settalkfflsealllearalllearstretdbf

12、_naedbf_nae待转换的.dbf数据库stretsql_dbsql_db目的SQL数据库stretsql_sql_向SQLServer提交的命令stretfnaefnae字段名stre0thandlehandleFxpr与SQLServer连接的标识stre0tsuesssuess命令提交成功与否的标识setlibrtfpsql.fll2,20say请输入要转换的数据库(dbf)名:getdbf_nae3,20say请输入目的SQL数据库名:getsql_dbreaddbf_nae=allt(dbf_nae)sql_db=allt(sql_db)handle=dbnnet(sql_db,

13、sa,)建立Fxpr与SQLServer连接ifhandle0若连接成功则usedbf_naeasp_dbfin0以p_dbf为别名打开待转换数据库selep_dbfpytdb_strustruexte将其数据结构拷贝生成db_stru库usedb_struin0seledb_strugttpsql_title=insertint+dbf_nae+(dhile.nt.ef()sql_title=sql_title+field_naeskipif.nt.ef()sql_title=sql_title+,elsesql_title=sql_title+)values(endifenddselep_

14、dbfgttpdhile.nt.ef()sql_=sql_titleseledb_strugttpdhile.nt.ef()fnae=field_naedaseasefield_type=sql_=sql_+fnaeasefield_type=Nsql_=sql_+nvert(int(8),+str(*fnae)+)asefield_type=sql_=sql_+nullasefield_type=Gsql_=sql_+nullendaseskipif.nt.ef()sql_=sql_+,elsesql_=aql_+)endifenddsuess=dbexe(handle,sql_)selep

15、_dbfskipenddelse若连接不成功aitind对不起,输入参数错误,无法连接SQLServerlearreadretuendif使用上述方法,只要知道一些简单的SQLServer操作及Fxpr编程便可实现将.dbf数据转换到SQLServer。运行程序然后输入待转换的数据库名,及目的数据库名就可实现转换,快捷方便。但不足的是,该方法在原数据库.dbf含有e、General字段时,转换就比较困难,目前尚没有找到有效的解决方法。4、用第三方数据库软件Aess进行转换Aess是irsft公司的数据库开发软件,使用Aess提供的数据输入(Inprt)/输出(Exprt)的功能及DB接口,可直

16、接将数据结构及数据转送到SQLServer。实现步骤:(1)、按方法二中的第1、2步骤完成数据库设备、数据库创建和DB接口的设置。(2)、然后在indsfrrkgrup中启动Aess,在File菜单中选择ne创建一个新的Aess数据库,然后在File菜单中选择Attahtable连接zg.dbf数据库。(3)、在Attah窗口的Datasure栏中选择数据库源为Fxpr2.5,按K,之后弹出SeletirsftAessDatabase窗口,在该窗口选择要转换的.dbf数据库zg.dbf,按K结束,然后按lse完成数据库连接。(4)、在File菜单中选择Exprt输出数据,在Exprt窗口选择目

17、标数据库类型SQLServer按K进入下一窗口SeletirsftAessbjet,在bjetinDB1栏选择要转换的数据库zg,在窗口的Vie栏下选择Table项,按K。(5)、进入Exprt窗口,在Exprtzgt栏目下输入目的数据库名zg,按K。进入SQLDataSures窗口,在SeletDataSure,选择在DB中定义好的zg数据源,按K(6)、进入SQLServerlgin窗口,在LginID:栏中输入登录用户名sa,在Passrd栏中若有登录口令则输入口令。否则按K开始进行数据转换。使用该方法用户不需要深入了解Fxpr命令及SQLServer命令,也不须深入了解Aess操作,更不需对.dbf数据库的数据结构进行分析,Aess可根据原.dbf数据库的结构自动在SQLServer上创建一个结构相同的表,并且可将原.dbf数据库中不论是字符型、数字型、日期型、e型、General型的所有数据转换到SQLServer表中。该方法可以简单、方便快捷、完整地将所有.dbf中的数据的转换到SQLServer。但使用该方法要注意一点,若要转换的数据量很大时,SQLServer中分配给该数据库的日志设备要足够大,或可在SQLServer中的ISQL/命令窗口中用以下命令进行监控,并及时清除。dbsqlperf(lgspae)检查事务日志空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论