exp命令的功能有限,无法满足楼主的要求,Oracle公司应该对这个命令再增加一些参数,增强其导出功能。有时我想导出一个用户下除了一个表之外的所有表都办不到,只能一个一个的把表名列出来。楼主的问题这样可能简单些,在sqlplus下执行 SELECT tname||',' FROM tab WHERE tname LIKE 'ABC%' AND tabtype='TABLE';将查询的结果拷贝到一个文件中,比如:ABC1, ABC2, ABC3,然后编辑此文件,在第1行增加如下内容 userid=username/pass file=d:\file.dmp log=d:\log.log tables=(最后一行表名后的“,”去掉,换为“)”,形成的文件类似为:userid=username/pass file=d:\file.dmp log=d:\log.log tables=( ABC1, ABC2, ABC3, ... ABCN)然后另存为filename.txt文件,这样就可以执行导出了: exp parfile=filename.txt
用这样的命令生成一段脚本: select 'EXP USRNMAE/PASSWORD TABLES(' || TABLE_NAME || ')' from user_table where table_name like 'A%' OR like 'B%' OR like 'C%';不过着只能导成多个文件,如果要导成一个文件,可以写一个存储过程。 以上只是参考。
很多的表,我难道都要写出来?有没有简单一点的办法?
或先用select * from user_tables,然后拷贝成脚本
SELECT tname||',' FROM tab WHERE tname LIKE 'ABC%' AND tabtype='TABLE';将查询的结果拷贝到一个文件中,比如:ABC1,
ABC2,
ABC3,然后编辑此文件,在第1行增加如下内容
userid=username/pass file=d:\file.dmp log=d:\log.log tables=(最后一行表名后的“,”去掉,换为“)”,形成的文件类似为:userid=username/pass file=d:\file.dmp log=d:\log.log tables=(
ABC1,
ABC2,
ABC3,
...
ABCN)然后另存为filename.txt文件,这样就可以执行导出了:
exp parfile=filename.txt
select 'EXP USRNMAE/PASSWORD TABLES(' || TABLE_NAME || ')' from
user_table where table_name like 'A%' OR like 'B%' OR like 'C%';不过着只能导成多个文件,如果要导成一个文件,可以写一个存储过程。
以上只是参考。