




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FoxproDBF数据库转换成SQLServer6.5表的几种方法 摘要:本文主要介绍用sql server bcp、foxpro编程、access等方法将.dbf数据库转换到sql server表的方法。关键词:xbase dbf sql server 数据库 转换1、前言当今,数据库联网实现数据共享已经成为信息系统建设中一个迅速发展的潮流。利用sql server、oracal、sybase等客户机/服务器(client/server)体系结构的数据库系统进行信息系统的开发、更新改造已成为当前一大趋势。而dbase、foxbase、foxpro是我国近年应用较为广泛的数据库开发软件,许多单位、部门多年来积累了大量的宝贵的数据资料,这些部门在进行计算机信息系统改造、更新的同时,面临如何继承大量历史数据的问题,本文介绍三种将dbf数据转换成sql server表的方法。2、利用sql server所提供的块拷贝实用程序(bcp)转换实用程序bcp.exe可从服务器sql目录下的binn子目录下获得。2.1、bcp的 命令格式及主要参数bcp database_name.owner. table_name in|out datafile /m maxerror /f formatfile /e errfile /n /c /t field_term /r row_term /u login_id /p password /s servername /v version /a packet_size主要参数:database_name 数据库名in|out in从文件到数据库表的拷贝。 out从数据库表到文件拷贝。datafile 操作系统文件的路径。该路径的长度可以是1255个字符。也可指明磁盘驱动器名字。/c 用字符类型作为缺省值执行拷贝操作。/u login_id 指定登录标识符。/p password 允许指定一个口令。/s servername 允许用户指定连接到哪个sql server2.2、实现转换的具体方法我们以foxpro的数据库结构的单位职工库(zg.dbf)为例,进行数据转换。其数据结构为:字段名 类型 字段长度 小数点位数 字段内容bh c 4 职工编号xm c 8 职工姓名xb c 2 性别nl n 2 0 年龄zw c 10 职务gzsj d 参加工作时间jl m 简历zp g 照片实现步骤:(1)、启动服务器,进入window nt,sql server 6.0,打开sql enterprise manager为单位职工库创建一个数据库设备zg.dat,然后在该设备上建立zg数据库及表(table),表的数据结构要与zg.dbf的数据结构一致。或用以下sql server命令创建设备和创建表。a、创建数据设备disk initname=zg 数据库设备名physname=c:zgzg.dat 数据库文件所在路径vdevno=8 数据库设备的标识号size=5120 数据库设备大小(10m)b、建立zg表create database zg_data on zg=1024,log on zg=1024 建立数据库use zg_datacreate table zg ( bh char (4) null, xm char (8) null, xb char (2) null, nl int null, zw char (10) null,gzsj datatime null, jl text null, zp image null ) 建立表go(2)、在客户机上启动foxpro,用use命令打开需转换的.dbf文件,用copy命令将.dbf文件中数据转换成标准的文本文件.txt,命令如下:use zg.dbfcopy all to zg.txt deli with blan(3)、从客户机登录到windows nt服务器上,将zg.txt文件拷贝到服务器的职工库目录c:zg下。(4)、在服务器上,由windows nt进入到ms-dos状态,然后执行bcp将数据从zg.txt转换到sql表,命令格式如下:bcp zg in zg.txt /c /s mainserver /u manager /p 0001 (mainserver为服务器名,manager为用户名,0001为用户口令)。该转换方法速度较快,不占用服务器上事务日志空间。但较为复杂、繁锁,操作者必须熟练掌握foxpro、sql server的命令和操作,而且无法将foxpro的memo、general字段转换到sql server表。3、用foxpro for window 2.5 编程实现转换用foxpro编程实现数据转换即通过sql server提供的odbc接口(开放数据库接口)及foxpr提供odbc接口工具connectivity kit (fpsql.fll),建立sql与foxpro的连接,由foxpro向sql server提交创建表命令,然后将.dbf的每条记录,串成一个字符串,将插入命令连同字符串提交给sql server,完成数据转换。实现步骤:(1)、odbc的设置:在客户机上启动windows for group,进入windows的控制面板( control panel )。双击odbc图标,进行zg数据库的odbc驱动设置。选择add增加新的odbc驱动接口,在install odbc drivers项选择sql server,按ok,弹出odbc sql server setup窗口,在 data source name项中输入zg_data,server项输入mainserver,按ok完成设置。(2)、采用上述方法一中步骤1的、创建zg数据库设备及数据库,然后执行foxpro程序crea_table,创建一个结构与.dbf结构相同的sql server表。程序清单如下:crea_table.prg 程序清单set talk offclose allclear allclearstore to dbf_name && dbf_name 待转换的.dbf数据库store to sql_db&& sql_db目的sql数据库store to sql_com && sql_com向sql server提交的命令store to sql_title && sql_title 为向sql server提交命令字头store 0 to handle && handle 为foxpro与sql server连接的标识store 0 to success && success为命令提交成功与否的标识set libr to fpsql.fll2,20 say 请输入要转换的数据库(dbf)名: get dbf_name3,20 say 请输入目的sql数据库名: get sql_dbreaddbf_name=allt(dbf_name)sql_db=allt(sql_db)handle=dbconnect(sql_db, sa,) && 建立foxpro与sql server连接if handle>0 && 若连接成功则use &dbf_name as op_dbf in 0 &&以op_dbf为别名打开待转换数据库sele op_dbfcopy to db_stru stru exte&& 将其数据结构拷贝生成db_stru库use db_stru in 0sele db_strugoto topsql_com=creat table +dbf_name+( do while .not. eof()sql_com=sql_com+field_name+ do casecase field_type=csql_com=sql_com+char (+;allt(str(field_len)+ )case field_type=nif field_dec=0if field_len<8 sql_com=sql_com+int elsesql_com=aql_com+float endifelse sql_com=sql_com+float endifcase field_type=dsql_com=sql_com+datatime case field_type=msql_com=sql_com+text case field_type=gsql_com=sql_com+binary endcaseskipif .not.eof()sql_com=sql_com+,endifenddosql_com=aql_com+ )success=dbexec(handle,sql_com)if successwait wind sql server表已建立成功! elsewait wind sql server表建立失败! endifclose allclear allretuelse && 若连接不成功wait wind 对不起,输入参数错误,无法连接sql serverclear readretu endif(3)、再执行foxpro程序conv_data将数据由.dbf传输到sql server表中。conv_data.prg 程序清单conv_data.prg 程序清单set talk offclose allclear allclearstore to dbf_name &&dbf_name待转换的.dbf数据库store to sql_db &&sql_db目的sql数据库store to sql_com &&sql_com向sql server提交的命令store to fname &&fname字段名store 0 to handle &&handle foxpro与sql server连接的标识store 0 to success &&success命令提交成功与否的标识set libr to fpsql.fll2,20 say 请输入要转换的数据库(dbf)名: get dbf_name3,20 say 请输入目的sql数据库名: get sql_dbreaddbf_name=allt(dbf_name)sql_db=allt(sql_db)handle=dbconnect(sql_db, sa,) &&建立foxpro与sql server连接if handle>0 && 若连接成功则use &dbf_name as op_dbf in 0&&以op_dbf为别名打开待转换数据库sele op_dbfcopy to db_stru stru exte&&将其数据结构拷贝生成db_stru库use db_stru in 0sele db_strugoto topsql_title=insert into +dbf_name+ ( do while .not.eof()sql_title=sql_title+field_nameskipif .not.eof() sql_title=sql_title+, else sql_title=sql_title+ ) values ( endifenddosele op_dbfgoto topdo while .not.eof()sql_com=sql_titlesele db_strugoto topdo while .not.eof() fname=field_name do case case field_type=c sql_com=sql_com+&fname case field_type=n sql_com=sql_com+convert(int(8),+str(*fname)+) case field_type=m sql_com=sql_com+null case field_type=g sql_com=sql_com+null endcase skip if .not.eof() sql_com=sql_com+, else sql_com=aql_com+) endifenddosuccess=dbexec(handle,sql_com)sele op_dbfskipenddo else && 若连接不成功wait wind 对不起,输入参数错误,无法连接sql serverclear readretu endif使用上述方法,只要知道一些简单的sql server操作及foxpro编程便可实现将.dbf数据转换到sql server。运行程序然后输入待转换的数据库名,及目的数据库名就可实现转换,快捷方便。但不足的是,该方法在原数据库.dbf含有memo、general字段时,转换就比较困难,目前尚没有找到有效的解决方法。4、用第三方数据库软件access进行转换access是microsoft公司的数据库开发软件,使用access提供的数据输入(inport)/输出(export)的功能及odbc接口,可直接将数据结构及数据转送到sql server。实现步骤:(1)、按方法二中的第1、2步骤完成数据库设备、数据库创建和odbc接口的设置。(2)、然后在windows for workgroup中启动access,在file菜单中选择new创建一个新的access数据库,然后在file菜单中选择attach table连接zg.dbf数据库。(3)、在attach窗口的data source栏中选择数据库源为foxpro 2.5,按ok,之后弹出select microsoft access database窗口,在该窗口选择要转换的.dbf数据库zg.dbf,按ok结束,然后按close完成数据库连接。(4)、在file菜单中选择export输出数据,在export窗口选择目标数据库类型<sql server>按ok进入下一窗口select microsoft access object,在object in db1栏选择要转换的数据库zg, 在窗口的view栏下选择table项,按ok。(5)、进入export窗口,在export zg to栏目下输入目的数据库名zg,按ok。进入sql data sources窗口,在select data source,选择在odbc中定义好的zg数据源,按ok(6)、进入sql server login窗口,在login id:栏中输入登录用户名sa,在password栏中若有登录口令则
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印刷废纸处置合同范本
- 2025设备租赁合同模板参考
- 租赁场地建设 合同范本
- 流动空地出租合同范本
- 养猪承包土地合同范本
- 监控安装电子合同范本
- 广告项目项目合同范本
- 建设项目变更造价咨询合同
- 砖厂挂牌转让合同范本
- 承包烟花戒指合同范本
- 老年肌肉衰减综合征(肌少症)课件
- 山西省持有《危险废物经营许可证》单位一览表
- PCB全制程培训教材
- 《李将军列传》教学教案及同步练习 教案教学设计
- 烟草配送车辆GPS管理方案
- 中图法分类号与中图分类法查询
- 酒店客房验收工程项目检查表(双床房、大床房、套房)
- 开音节闭音节中元音字母的发音规律练习
- 电力设备预防性试验及维护保养方案
- 融资性担保贷款保后检查表
- 公司人力资源管理制度管理制度
评论
0/150
提交评论