Oracle 10G是否有类似于Informix的unload和load功能

humucun 2008-12-01 05:23:49
大家好,有个问题向大家请教。我们知道informix的unload和load的功能非常好用,其中unload的语法为:unload to 文件名 select查询语句;load的语法为:load from 文件名 insert into 表名。informix提供的unload功能可方便的实现将满足指定条件的数据导出;load功能可方便的实现将符合指定格式的数据插入到表中。那么在Oracle 10G中有无unload和load功能呢?还是只能自已写shell,实现类似的功能。
...全文
986 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
humucun 2008-12-31
  • 打赏
  • 举报
回复
过年了,结帖给分,感谢大家回复,祝新年快乐!
humucun 2008-12-21
  • 打赏
  • 举报
回复
sleepzzzzz您好,您有更佳的答案吗?
sleepzzzzz 2008-12-21
  • 打赏
  • 举报
回复
且慢,接分!
humucun 2008-12-21
  • 打赏
  • 举报
回复
看来这个问题大家遇到的可能少些,那就结帖吧,感谢所参与此帖的朋友们,祝工作愉快,接分啦!
chenjianping353577 2008-12-21
  • 打赏
  • 举报
回复
学习中
jdsnhan 2008-12-21
  • 打赏
  • 举报
回复
oracle中的exp在加where条件的时候有bug。经常性的,如果直接“=”某个条件没问题,如果变成“>”则提示错误。

导出内容到文件可以用oracle 的包,或者使用spool 文件名,spool off。
导入文件内容可以使用sqlldr。
humucun 2008-12-21
  • 打赏
  • 举报
回复
后来我查了一下,可以通过下面的方式来实现:
一、导出表数据:
1、不带条件导出整表:$exp 用户名/密码@实例名 file=路径名/文件名.dmp tables={table1,table2}
2、带条件导出某个表的数据:$exp 用户名/密码@实例名 file=路径名/文件名.dmp tables=表名 query=\" where语句 \" 或$exp 用户名/密码@实例名 file=路径名/文件名.dmp tables=表名 query=\" select X,X,X from 表名 where语句 \" ,如命令太长,可写一个shell实现。
注意:第2种方式导出时有时会经常报下面类似的错误:
LRM-00112: multiple values not allowed for parameter 'query'

EXP-00019: failed to process parameters, type 'EXP HELP=Y' for help
EXP-00000: Export terminated unsuccessfully
解决方法:在query条件的双引号和where语名中的某些运算符前加上\即可。例如:$exp 用户名/密码@实例名 file=路径名/文件名 tables=表名 query=\" select X,Y,Z from 表名 where X\>6 \"
二、导入表数据
imp 用户名\密码@实例名 file=路径名\文件名.dmp tables=表名 ignore=y
注:如在导入之前该表已存在,如不想将此表删除,只想导入文件名.dmp中的数据,则需加上ignore=y

不知我自已整理的东西是否正确,请大家指正。为响应sleepzzzzz的号召,那就先暂缓结贴吧,没别的意思,只是想多听听大家的想法,多学点东西。
mantisXF 2008-12-02
  • 打赏
  • 举报
回复
ORACLE中的SQLLDR可以实现上述功能,在UNIX环境上用SQLPLUS调用SQLLDR命令即可。
[Quote=引用楼主 humucun 的帖子:]
大家好,有个问题向大家请教。我们知道informix的unload和load的功能非常好用,其中unload的语法为:unload to 文件名 select查询语句;load的语法为:load from 文件名 insert into 表名。informix提供的unload功能可方便的实现将满足指定条件的数据导出;load功能可方便的实现将符合指定格式的数据插入到表中。那么在Oracle 10G中有无unload和load功能呢?还是只能自已写shell,实现类似的功能。
[/Quote]
BlueskyWide 2008-12-01
  • 打赏
  • 举报
回复
1.Oracle中使用exp可以导出单个表中的数据;
exp test/test@user_string table=表名1 file=路径名\20081201表名1.dmp(dos下命令)

2.Oracle中直接追加至某表是不行的,必须将表的内容使用imp导至某用户以后,
才能在tableB中加入tableA中符合条件的数据:
insert into tableB as select * from tableA where ......;


[Quote=引用楼主 humucun 的帖子:]
大家好,有个问题向大家请教。我们知道informix的unload和load的功能非常好用,其中unload的语法为:unload to 文件名 select查询语句;load的语法为:load from 文件名 insert into 表名。informix提供的unload功能可方便的实现将满足指定条件的数据导出;load功能可方便的实现将符合指定格式的数据插入到表中。那么在Oracle 10G中有无unload和load功能呢?还是只能自已写shell,实现类似的功能。
[/Quote]
Andy__Huang 2008-12-01
  • 打赏
  • 举报
回复
这个东西我也没有用过,友情UP!
又是违规昵称 2008-12-01
  • 打赏
  • 举报
回复
oracle sql loader可以做, 但是也没informix那么方便

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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