数据重用技术的研究

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字段名 bh xm xb nl zw gzsj jl zp
表 1 职工库数据结构
类型
字段长度 小数位数










10




字段内容 职工编号 职工姓名 性别 年龄 职务 参加工作时间 简历 照片
创建数据设备:
disk init
nam e='zg'
& & 数据库设备名
physnam e='c:\\zg\\zg.dat' & & 数据库文件所在路径
0 引言
当今,数据库联网实现数据共享已经成为信息系统建设 中一个迅速发展的潮流。利用 SQ L Server、O racal、Sybase 等客 户机 /服务器(C lient/Server)体系结构的数据库系统进行信息 系 统 的 开 发 、 更 新 改 造 已 成 为 当 前 一 大 趋 势 。 而 D base、 Foxbase、Foxpro 是我国应用较早的数据库开发软件,许多单 位、部门多年来积累了大量宝贵的数据资料,这些部门在进行 计算机信息系统改造、更新的同时,面临如何继承大量历史数 据的问题。本文介绍三种将 D B F 数据转换成 SQ L Server 表 的方法。
S erver连接 if handle>0 & & 若连接成功则 use & dbf_nam e 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_nam e+"( " & & 对 db_stru 表循环,判别记录内容产生 sql_com 值
主要参数:
database_nam e & & 数据库名
in/out & & in 从文件到数据库表的拷贝,out从数据库表到文件
拷贝。
datafile & & 操作系统文件的路径。该路径的长度可以是 1- 255
个字符。也可指明磁盘驱动器名字。
/C
& & 用字符类型作为缺省值执行拷贝操作。
/u login_ID
·59·
Com puter Era N o.7 2006
数据重用技术的研究
武颖 (华北科技学院,北京 101601)
摘 要:对 SQ L Server所提供的实用工具 bcp 进行比较详细的介绍,利用该工具对 Foxpro 开发的软件中的数据进行转 换,实现系统数据的重用;通过 SQ L Server提供的 O D B C 接口及 Foxpro 提供的 O D B C 接口工具 C onnectivity K it,建立 SQ L 与 Foxpro 的连接,实现数据的重用;用 A ccess 提供的数据输入和输出功能及 O D B C 接口,直接将数据结构及数据转 送到 SQ L Server系统,实现数据的重用。 关键词:X base D B F;SQ L Server数据库;转换;重用
具 C onnectivity K i(t fpsql.fll),建立 SQ L 与 Foxpro 的连接,由
case field_type="G "
Foxpro 向 SQ L Server提交创建表命令,然后将.dbf 的每条记
sql_com =sql_com +"binary"
录,串成一个字符串,将插入命令连同字符串提交给 SQ L
R ead
dbf_nam e=allt(dbf_nam e)
A ccess 是 M icrosoft公司的数据库开发软件,使用 A ccess 提供的数据输入(Inport)/输出(E xport)的功能及 O D B C 接口, 可直接将数据结构及数据转送到 SQ L Server。
实现步骤: ⑴ 采用本文 1.2 所述方法完成数据库设备、数据库创建。 并进行 O D B C 接口的设置。 ⑵ 然后在 W indow s for W orkgroup 中启动 A ccess,在 File 菜单中选择“new ”,创建一个新的 A ccess 数据库,然后在 File 菜单中选择“A ttach table”连接 zg.dbf数据库。
使用上述方法,只要知道一些简单的 SQ L Server操作及 Foxpro 编程便可实现将.dbf数据转换到 SQ L Server。运行程序 然后输入待转换的数据库名,及目的数据库名就可实现转换, 快捷方便。但不足的是,该方法在原数据库.dbf 含有 M em o、 G eneral字段时,转换就比较困难,目前尚没有找到有效的解决 方法。
sql_com =aql_com +" )"
Server,完成数据转换。 实现步骤: ⑴ O D B C 的设置:在客户机上启动 W indow s for group,
进入 W indow s 的控制面板 ( C ontrol panel )。双击 O D B C 图 标,进行 zg 数据库的 O D B C 驱动设置。
m axerror ][/f form atfile] [/e errfile] [/n] [/c] [/t field_term ] [/r
row _term ] [/U login_ID ] [/P passw ord] [/S servernam e] [/v
version] [/a packet_size]
⑵ 采用本文 1.2 所述方法建立 zg 数据库设备及数据库, 然后执行 Foxpro 程序 crea_table,创建一个结构与.dbf结构相 同的 SQ L Server表。程序算法如下:
crea_table.prg 程序算法描述: store "" to dbf_nam e & & dbf_nam e 待转换的.dbf数据库 store "" to sql_db & & sql_db 目的 S Q L 数据库
& & 指定登录标识符。
/P passw ord & & 允许指定一个口令。
/S servernam e & & 允许用户指定连接到哪个 S Q L S erver
1.2 实现转换的具体方法
我们以 Foxpro 的数据库结构的单位职工库(zg.dbf)为例,
进行数据转换。其数据结构如表 1 所示。
实现步骤:
success=dbexec(handle,sql_com ) if success
w ait w ind "S Q L S erver表已建立成功!" else
w ait w ind "S Q L S erver表建立失败!" endif
⑶ 再执行 Foxpro 程序 conv_data 将数据由.dbf 传输到 SQ L Server 表中。conv_data.prg 程序算法与 crea_table.prg 类 似,这里不再详述。
然后执行 bcp 将数据从 zg.txt转换到 SQ L 表。命令格式如下:
bcp zg in zg.txt /c /s m ainserver /u m anager /P 0001
(m ainserver为服务器名,m anager为用户名,0001 为用户口令)。
计算机时代 2006 年 第 7 期
命令如下:
use zg.dbf
copy all to zg.txt deli w ith blank
⑶ 从客户机登录到 W indow s N T 服务器上,将 zg.txt文
件拷贝到服务器的职工库目录 c:\\zg 下。
⑷ 在服务器上,由 W indow s N T 进入到 M S-D O S 状态,
选择“A dd”增加新的 O D B C 驱动接口,在 Install O D B C drivers 项选择“SQ L Server”,按“O K ”,弹出“O D B C SQ L Server Setup”窗口,在 D ata source nam e 项中输入“zg_data”, Server项输入“m ainserver”,按“O K ”完成设置。
·60·
该转换方法速度较快,不占用服务器上事务日志空间。但
case field_type="C "
较为复杂、繁锁,操作者必须熟练掌握 Foxpro、SQ L Server的命
sql_com =sql_com +"char ("+allt(str(field_len))+ ")"
令和操作,而且无法将 Foxpro 的 M em o、G eneral字段转换到 SQ L Server表。
null, nl int null, zw char (10) null,gzsj datatim e null, jl text
null, zp im age null) & & 建立 zg 表
⑵ 在客户机上启动 Foxpro,用 U SE 命令打开需转换的.dbf
文件,用 C O PY 命令将.dbf文件中数据转换成标准的文本文件.txt。
1 ቤተ መጻሕፍቲ ባይዱ用 S Q L S erver所提供的块拷贝实用程序(bcp) 转换
实用程序 bcp.exe 可从服务器 SQ L 目录下的 B IN N 子目录
下获得。
1.1 bcp 的命令格式及主要参数
bcp [[database_nam e.]ow ner.] table_nam e {in|out} datafile [/m
vd e vn o = 8
& & 数据库设备的标识号
size = 5 1 2 0
& & 数据库设备大小(10M )
建立 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)
2 用 F oxpro for W indow 2.5 编程实现转换
用 Foxpro 编程实现数据转换,即通过 SQ L Server提供的 O D B C 接口(开放数据库接口)及 Foxpro 提供的 O D B C 接口工
case field_type="N " sql_com =sql_com +"int "|sql_com =aql_com +"float" case field_type="D " sql_com =sql_com +"datatim e" case field_type="M " sql_com =sql_com +"text"
store "" to sql_com & & sql_com 向 S Q L S erver提交的命令 3 用第三方数据库软件 A ccess 进行转换
store "" to sql_title & & sql_title 为向 S Q L S erver提交命令
字头
store 0 to handle
D atabase”窗口,在该窗口选择要转换的.dbf数据库 zg.dbf,按 “O K ”结束,然后按“C lose”完成数据库连接。
⑴ 启动服务器,进入 W indow N T ,SQ L Server 6.0,打开
SQ L E nterprise M anager,为单位职工库创建一个数据库设备
zg.dat,然后在该设备上建立 zg 数据库及表(T able),表的数据结 构要与 zg.dbf的数据结构一致,或用以下 SQ L Server命令创 建设备和创建表。
& & handle 为 F oxpro 与 S Q L S erver连
接的标识
store 0 to success & & success 为命令提交成功与否的标识
set libr to fpsql.fll
@ 2,20 say "请输入要转换的数据库(dbf)名:" get dbf_nam e
@ 3,20 say "请输入目的 S Q L 数据库名:" get sql_db
sq l_ d b = a llt(sq l_ d b )
⑶ 在“A ttach”窗口的“D ata source”栏中选择数据库源为
handle=dbconnect(sql_db, "sa","") & & 建立 F oxpro 与 S Q L
Foxpro 2.5, 按 “O K ”, 之 后 弹 出 “Select M icrosoft A ccess
相关文档
最新文档