SQL&Loader是ORACLE提供的一种工具用这一工具可把外部文件中的数据装载到ORACLE的数据库中利用这一原理可以把FOXPRO的数据导出到文本文件再利用SQL*Loader装载到ORACLE数据库中
一 从FOXPRO中导出数据
打开file/exportType选择delimited text在To项中给出导出的数据文件名字段间以区分开Fro项选择要导出的FOXPRO数据库文件并选择数据文件存储位置
打开Options根据需要设置ScopeForWhile和Fields点击OK进行导出
例如导出人员管理数据库中的序号姓名性别出生日期数据文件保存为ryctl文件名其内容如下
白余量男//
李汉为男//
郭正林男//
二 编辑数据文件为控制文件格式
LOAD DATA
INFILE *
REPLACE
INTO TABLE wxryb
FIELDS TERMINATED BY OPTIONALLY ENCLOSED
(xhnamesexbirth date() mm/dd/yyyy)
BEGINDATA
白余量男//
李汉为男//
郭正林男//
其中INFILE * 表示数据在控制文件后部REPLACE是数据装载方式还 可以是INSERTAPPEND等 wxryb 是ORACLE数据库表名 (xhnamesexbirth date() mm/dd/yyyy)是wxryb中的字段名 mm/dd/yyyy是被转换日期数据的格式BEGINDATA以后是要装载的数据
三 把数据文件ftp到数据库服务器上
四 以oracle用户身份登录到数据库服务器
五 在命令行输入
sqlldr userid=refine/refine control=ryctl log=ry
log bad=rybad执行数据装载
其中userid指定的用户对wxryb要有一定权限可指定log文件和bad文件 对装载过程进行检查本命令 还可带有多个参数进行装载控制可在命令行 输入sqlldr查阅
对于FOXPRO的MEMO字段数据可利用COPY MEMO命令导出到文本文件再按上述方法装入如果数据装载不成功请查阅log文件和bad文件其原因多与数据类型的匹配和长度有关对于FOXPRO日期型数据如果为空(如上例第条记录)ORACLE不识别/ /则装载会失败因此在从FOXPRO导出前我先给所有birth为空的记录赋予一个日期//待装载成功后只需一个命令
update wxryb set birth= where birth=?JAN
即可在wxryb中恢复相关记录的birth空值