在线客服系统

FoxproDBF数据库转换成SQLServer6.5表的几种方法

时间:2015-08-31 09:46 来源:发表吧 作者:发表吧编辑 点击:
  【摘要】:本文主要介绍用sqlserverbcp、foxpro编程、access等方法将.dbf数据库转换到sqlserver表的方法。
  【关键词】:xbasedbfsqlserver数据库转换
  1、前言
  当今,数据库联网实现数据共享已经成为信息系统建设中一个迅速发展的潮流。利用sqlserver、oracal、sybase等客户机/服务器(client/server)体系结构的数据库系统进行信息系统的开发、更新改造已成为当前一大趋势。而dbase、foxbase、foxpro是我国近年应用较为广泛的数据库开发软件,许多单位、部门多年来积累了大量的宝贵的数据资料,这些部门在进行计算机信息系统改造、更新的同时,面临如何继承大量历史数据的问题,本文介绍三种将dbf数据转换成sqlserver表的方法。
  2、利用sqlserver所提供的块拷贝实用程序(bcp)转换
  实用程序bcp.exe可从服务器sql目录下的binn子目录下获得。
  2.1、bcp的命令格式及主要参数
  bcp[[database_name.]owner.]table_name{in|out}datafile[/mmaxerror][/fformatfile][/eerrfile][/n][/c][/t]field_term][/rrow_term][/ulogin_id][/ppassword][/sservername][/vversion][/apacket_size]
  主要参数:
  database_name数据库名
  in|outin从文件到数据库表的拷贝。
  out从数据库表到文件拷贝。
  datafile操作系统文件的路径。该路径的长度可以是
  1-255个字符。也可指明磁盘驱动器名字。
  /c用字符类型作为缺省值执行拷贝操作。
  /ulogin_id指定登录标识符。
  /ppassword允许指定一个口令。
  /sservername允许用户指定连接到哪个sqlserver
  2.2、实现转换的具体方法
  我们以foxpro的数据库结构的单位职工库(zg.dbf)为例,进行数据转换。其数据结构为:
  字段名类型字段长度小数点位数字段内容
  bhc4职工编号
  xmc8职工姓名
  xbc2性别
  nln20年龄
  zwc10职务
  gzsjd参加工作时间
  jlm简历
  zpg照片
  实现步骤:
  (1)、启动服务器,进入windownt,sqlserver6.0,打开sqlenterprisemanager为单位职工库创建一个数据库设备zg.dat,然后在该设备上建立zg数据库及表(table),表的数据结构要与zg.dbf的数据结构一致。或用以下sqlserver命令创建设备和创建表。
  a、创建数据设备
  diskinit
  name='zg'数据库设备名
  physname='c:\\zg\\zg.dat'数据库文件所在路径
  vdevno=8数据库设备的标识号
  size=5120数据库设备大小(10m)
  b、建立zg表
  createdatabasezg_dataonzg=1024,logonzg=1024建立数据库
  usezg_data
  createtablezg(bhchar(4)null,xmchar(8)null,xbchar(2)null,nlintnull,zwchar(10)null,gzsjdatatimenull,jltextnull,zpimagenull)建立表
  go
  (2)、在客户机上启动foxpro,用use命令打开需转换的.dbf文件,用copy命令将.dbf文件中数据转换成标准的文本文件.txt,命令如下:
  usezg.dbf
  copyalltozg.txtdeliwithblan
  (3)、从客户机登录到windowsnt服务器上,将zg.txt文件拷贝到服务器的职工库目录c:\\zg下。
  (4)、在服务器上,由windowsnt进入到ms-dos状态,然后执行bcp将数据从zg.txt转换到sql表,命令格式如下:
  bcpzginzg.txt/c/smainserver/umanager/p0001(mainserver为服务器名,manager为用户名,0001为用户口令)。
  该转换方法速度较快,不占用服务器上事务日志空间。但较为复杂、繁锁,操作者必须熟练掌握foxpro、sqlserver的命令和操作,而且无法将foxpro的memo、general字段转换到sqlserver表。
  3、用foxproforwindow2.5编程实现转换
  "用foxpro编程实现数据转换"即通过sqlserver提供的odbc接口(开放数据库接口)及foxpr提供odbc接口工具connectivitykit(fpsql.fll),建立sql与foxpro的连接,由foxpro向sqlserver提交创建表命令,然后将.dbf的每条记录,串成一个字符串,将插入命令连同字符串提交给sqlserver,完成数据转换。
  实现步骤:
  (1)、odbc的设置:在客户机上启动windowsforgroup,进入windows的控制面板(controlpanel)。双击odbc图标,进行zg数据库的odbc驱动设置。
  选择"add"增加新的odbc驱动接口,在installodbcdrivers项选择"sqlserver",按"ok",弹出"odbcsqlserversetup"窗口,在datasourcename项中输入"zg_data",server项输入"mainserver",按"ok"完成设置。
  (2)、采用上述方法一中步骤1的⑴、⑵创建zg数据库设备及数据库,然后执行foxpro程序crea_table,创建一个结构与.dbf结构相同的sqlserver表。程序清单如下:
  crea_table.prg程序清单
  settalkoff
  closeall
  clearall
  clear
  store""todbf_name
  &&dbf_name待转换的.dbf数据库
  store""tosql_db
  &&sql_db目的sql数据库
  store""tosql_com
  &&sql_com向sqlserver提交的命令
  store""tosql_title
  &&sql_title为向sqlserver提交命令字头
  store0tohandle
  &&handle为foxpro与sqlserver连接的标识
  store0tosuccess
  &&success为命令提交成功与否的标识
  setlibrtofpsql.fll
  @2,20say"请输入要转换的数据库(dbf)名:"getdbf_name
  @3,20say"请输入目的sql数据库名:"getsql_db
  read
  dbf_name=allt(dbf_name)
  sql_db=allt(sql_db)
  handle=dbconnect(sql_db,"sa","")
  &&建立foxpro与sqlserver连接
  ifhandle>0&&若连接成功则
  use&dbf_nameasop_dbfin0
  &&以op_dbf为别名打开待转换数据库
  seleop_dbf
  copytodb_strustruexte
  &&将其数据结构拷贝生成db_stru库
  usedb_struin0
  seledb_stru
  gototop
  sql_com="creattable"+dbf_name+"("
  dowhile.not.eof()
  sql_com=sql_com+field_name+""
  docase
  casefield_type="c"
  sql_com=sql_com+"char("+;
  allt(str(field_len))+")"
  casefield_type="n"
  iffield_dec=0
  iffield_len<8
  sql_com=sql_com+"int"
  else
  sql_com=aql_com+"float"
  endif
  else
  sql_com=sql_com+"float"
  endif
  casefield_type="d"
  sql_com=sql_com+"datatime"
  casefield_type="m"
  sql_com=sql_com+"text"
  casefield_type="g"
  sql_com=sql_com+"binary"
  endcase
  skip
  if.not.eof()
  sql_com=sql_com+","
  endif
  enddo
  sql_com=aql_com+")"
  success=dbexec(handle,sql_com)
  ifsuccess
  waitwind"sqlserver表已建立成功!"
  else
  waitwind"sqlserver表建立失败!"

www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
  本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/ CSSCI核心/医学投稿辅导/职称投稿辅导。

投稿邮箱:fabiaoba365@126.com
 在线咨询: 投稿辅导275774677投稿辅导1003180928
 在线咨询: 投稿辅导610071587投稿辅导1003160816
 联系电话:13775259981

联系方式
李老师QQ:发表吧客服610071587 陈老师QQ:发表吧客服275774677 刘老师QQ:发表吧客服1003160816 张老师QQ:发表吧客服1003180928 联系电话:18796993035 投稿邮箱:fabiaoba365@126.com
期刊鉴别
  • 刊物名称:
  • 检索网站:
热门期刊
发表吧友情提醒

近来发现有些作者论文投稿存在大量剽窃、抄袭行为,“发表吧”对此类存在大量剽窃、抄袭的论文已经停止编辑、推荐。同时我们也提醒您,当您向“发表吧”投稿时请您一定要保证论文的原创性、唯一性,这既是对您自己负责,更是对他人的尊敬。

此类投稿的论文如果发表之后,对您今后的人生和事业将造成很大的麻烦,后果不堪设想,请您一定要慎重,三思而后行。

如因版权问题引起争议或任何其他原因,“发表吧”不承担任何法律责任,侵权法律责任概由剽窃、抄袭者本人承担。

 
QQ在线咨询
陈老师:275774677
张老师:1003180928
李老师:610071587
刘老师:1003160816
论文刊登热线:
137-7525-9981
微信号咨询:
fabiaoba-com

友情链接

申请链接