delphi编写oracle导入、导出dmp文件,来着有分

beifangke 2006-09-25 05:40:29
如何用delphi编写oracle导入、导出Dmp格式的程序,请大家帮忙,解决后送100分
...全文
542 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
widow 2007-03-23
  • 打赏
  • 举报
回复
第一种方法
1、全数据库的导入与导出

exp username/password full=y file=yourdata.dmp grants=y rows=y
imp username/password full=y ignore=y file=yourdata.dmp grants=y

exp与imp的具体用法

exp username/password@mzbs_61 full=y file=yourdata.dmp grants=y rows=y
imp username/password full=y ignore=y file=yourdata.dmp grants=y

exp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y rows = y
imp mzbs/mzbs@mzbs_61 file = c:\zzzzzzz.dmp grants = y ignore=y FULL=Y


2、在delphi中调用外部命令函数

第二种方法

1、建一个外部sql文件
exp参数:
关键字 说明(默认)
----------------------------------------------
USERID 用户名/口令
FULL 导出整个文件 (N)
BUFFER 数据缓冲区的大小
OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP)
TABLES 表名列表
COMPRESS 导入一个范围 (Y)
RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y)
INCTYPE 增量导出类型
INDEXES 导出索引 (Y)
RECORD 跟踪增量导出 (Y)
ROWS 导出数据行 (Y)
PARFILE 参数文件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕输出的日志文件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
FILESIZE 各转储文件的最大尺寸
QUERY 选定导出表子集的子句

imp参数:
关键字 说明(默认)
----------------------------------------------
USERID 用户名/口令
FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小
FROMUSER 所有人用户名列表
FILE 输入文件 (EXPDAT.DMP)
TOUSER 用户名列表
SHOW 只列出文件内容 (N)
TABLES 表名列表
IGNORE 忽略创建错误 (N)
RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y)
INCTYPE 增量导入类型
INDEXES 导入索引 (Y)
COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y)
PARFILE 参数文件名
LOG 屏幕输出的日志文件
CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
ANALYZE 执行转储文件中的 ANALYZE 语句 (Y)
FEEDBACK 显示每 x 行 (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储文件的最大尺寸
RECALCULATE_STATISTICS 重新计算统计值 (N)

(2)

一、建立一个expdata.sql文件

USERID=RMTAFIS/3 这里写你的用户名和密码
BUFFER=32768
OWNER=RMTAFIS 这里写导出的用户
FILE=E:\Exp\RMTAFIS.DMP 导出的文件,可以是相对路径
ROWs=Y
GRANTS=Y
COMPRESS=Y
CONSISTENT=Y

二、建立一个expdata.bat
exp parfile=expdata.sql
如果是805
exp80 parfile=expdata.sql
双击expdata.bat就导出数据了


7、如果在like的变量中,是以‘%’开头的话,是不会使用index的。反之,不是以‘%‘开头,而又有相应的index,是会使用index的。具体

可以用plain plan来看一下。



2、用odac控件调用该文件,实现导入导出


dd_zhouqian 2006-10-08
  • 打赏
  • 举报
回复
计划任务里做备份,其实oracle 的数据这一块需要专人的,否则怎么有个名词叫DBA呢?他们也要吃饭啊!
beifangke 2006-10-08
  • 打赏
  • 举报
回复
兄弟们能不能详细,具体点
CloneCenter 2006-09-30
  • 打赏
  • 举报
回复
调用EXP导出就结束了。
maxtool 2006-09-30
  • 打赏
  • 举报
回复
咔咔,做个BAT文件更快~~
beifangke 2006-09-29
  • 打赏
  • 举报
回复
我的意思是直接用delphi编一个导入到处程序,我们的程序提供给用户做备份时用,所以那个有好方法请赐教,帮忙啊!
oushengfen 2006-09-28
  • 打赏
  • 举报
回复
楼主的意思是利用现有的资源来做还是,完全自己用程序来实现dmp文件的导入导出,如果是前者则必较好做,WinExec执行某个程序,且带上参数即可.如果是后者,则需要了解dmp的格式等,才能进行导入导出.用前者就够了,后者太麻烦了/
sdzeng 2006-09-28
  • 打赏
  • 举报
回复
Oracle提供了imp和exp这两个命令行工具
你可以去了解一下命令的语法

Delphi里用WinExec执行就可以了
beifangke 2006-09-28
  • 打赏
  • 举报
回复
sdzeng(大头鸟),能详细点不,我现在需要用delphi写一个导入导出程序,请帮忙了
sdzeng 2006-09-26
  • 打赏
  • 举报
回复
你平时都是怎么导入导出的?
Oracle提供的有相应的控制台程序,
用WinExec执行控制台程序就可以
beifangke 2006-09-26
  • 打赏
  • 举报
回复
我的邮箱是xiaoxiaoyu879@126.com有源码可以直接发送至邮箱,谢谢各位了
beifangke 2006-09-26
  • 打赏
  • 举报
回复
有高手没,指教一二,谁解决了另外送100分
ZJZM214120 2006-09-26
  • 打赏
  • 举报
回复
jf
sdzeng 2006-09-26
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec('exp .............',SW_SHOWNORMAL);
end;
real_name 2006-09-26
  • 打赏
  • 举报
回复
没有搞过
Rubi 2006-09-25
  • 打赏
  • 举报
回复
没有搞过啊
sdzbbz 2006-09-25
  • 打赏
  • 举报
回复
顶,接分

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧