FoxproDBF数据库转换成SQLServer6.5表的几种方法 --免费毕业论文、毕业论文范文、毕业论文格式、毕业论文提纲,毕业论文网,提供计算机应用论文,计算机论文,工学论文毕业论文提纲、毕业论文范文、毕业论文格式等.
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
网站地图
合作联系
收藏本站

首 页 经济学论文 财政税收 证券金融 管理学论文 会计审计 工商管理 财务管理 公共管理 法学论文 理学论文 医药学论文
政治论文 社会学论文 文学论文 教育类论文 工学论文 计算机论文 艺术类论文 哲学论文 文化论文 英语论文 应用文 论文写作指导
邮电通信

   
 ·推荐免费论文
·2007县委办公室先进性教育活动工
·用科学发展观统领农业和农村经济
·计算机实习报告范文
·调查报告:大学生眼中的电子商务
·当前农村初中生学习心理的调查报
·求职信的格式和写作要点 
·英文简历写作的注意事项 
·毕业论文写作的基本要求
·计算机软件许可证协议书
 ·最近更新论文
·在电子商务中如何正确的使用数据
·大型ORACLE数据库优化设计方案
·在VB6.0数据库程序开发中使用ADO
·浅谈VFP报表打印问题
·通用网页查询函数的设计与应用
·构建校园网页面电子邮件系统
·Delphi中画布应用两则
·利用RCM2200实现以太网与异步串口
·Oracle数据库的优化
 ·推荐链接
   当前位置:首页 > 计算机论文 > 计算机应用 > 论文正文
联系我们 客户反馈

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

来源:  [ 2007-3-8 22:19:21 ]  作者:佚名  编辑:
收藏到VIVI | 收藏到365KEY | 收藏到YOUNOTE | 收藏到博采| 收藏到天极网摘 | 收藏到和讯网摘

摘要:本文主要介绍用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         操作系统文件的路径。该路径的长度可以是
1-255个字符。也可指明磁盘驱动器名字。
/c             用字符类型作为缺省值执行拷贝操作。
/u login_id    指定登录标识符。
/p password    允许指定一个口令。
/s servername    允许用户指定连接到哪个sql server

2.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 init
name='zg'                     数据库设备名
physname='c:\\zg\\zg.dat'    数据库文件所在路径
vdevno=8                     数据库设备的标识号
size=5120                     数据库设备大小(10m)

b、建立zg表
create database zg_data on zg=1024,log on zg=1024     建立数据库
use zg_data
create 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.dbf
copy 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 off
close all
clear all
clear
store "" 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.fll
@2,20 say "请输入要转换的数据库(dbf)名:" get dbf_name
@3,20 say "请输入目的sql数据库名:" get sql_db
read
dbf_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_dbf
copy to db_stru stru exte
&& 将其数据结构拷贝生成db_stru库
use db_stru in 0
sele db_stru
goto top
sql_com="creat table "+dbf_name+"( "
do while .not. eof()
sql_com=sql_com+field_name+" "
do case
case field_type="c"
sql_com=sql_com+"char ("+;
allt(str(field_len))+ ")"
case field_type="n"
if field_dec=0
if field_len<8
sql_com=sql_com+"int "
else
sql_com=aql_com+"float "
endif
else
        sql_com=sql_com+"float "
endif
case field_type="d"
sql_com=sql_com+"datatime "
case field_type="m"
sql_com=sql_com+"text "
case field_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)
if success
wait wind "sql server表已建立成功! "
else
wait wind "sql server表建立失败! "
endif
close all
clear all
retu
else    && 若连接不成功
wait wind "对不起,输入参数错误,无法连接sql server'
clear read
retu   
endif

(3)、再执行foxpro程序conv_data将数据由.dbf传输到sql server表中。

conv_data.prg 程序清单

conv_data.prg 程序清单
set talk off
close all
clear all
clear
store "" 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.fll
@2,20 say "请输入要转换的数据库(dbf)名:" get dbf_name
@3,20 say "请输入目的sql数据库名:" get sql_db
read
dbf_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_dbf
copy to db_stru stru exte
&&将其数据结构拷贝生成db_stru库
use db_stru in 0
sele db_stru
goto top
sql_title="insert into "+dbf_name+" ( "
do while .not.eof()
sql_title=sql_title+field_name
skip
if .not.eof()
    sql_title=sql_title+","
else
    sql_title=sql_title+" ) values ('"
endif
enddo
sele op_dbf
goto top
do while .not.eof()
sql_com=sql_title
sele db_stru
goto top
do 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+"')"
    endif
enddo
success=dbexec(handle,sql_com)
sele op_dbf
skip
enddo
else    && 若连接不成功
wait wind "对不起,输入参数错误,无法连接sql server"
clear read
retu   
endif

使用上述方法,只要知道一些简单的sql server操作及foxpro编程便可实现将.dbf数据转换到sql server。运行程序然后输入待转换的数据库名,及目的数据库名就可实现转换,快捷方便。但不足的是,该方法在原数据库.dbf含有memo、general字段时,转换就比较困难,目前尚没有找到有效的解决方法。

本论文共2页,当前在第1页  1  2  

论文首页】【设为主页】【字体: 加入收藏】【打印本文】【回到顶部
 
上篇文章: 多媒体创作系统的设计与实现  下篇文章: 如何测试软硬盘驱动器参数
网站首页 - 友情链接 - 网站地图 - 加入收藏

声明:中国论文网毕业论文资料来源于网络,如有侵犯您的权益,请立即告知,我们将删除!
联系方式: E-mail:Laozhanga@QQ.COM QQ:75931341
喜欢WitkeyCity.Com,请把WitkeyCity.Com告诉你QQ上的5位好友,多谢支持!
冀ICP备07000828号