现有一备份文件。。我想把其中一些表导入或导出来。。怎么办????
imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 这个命令的tables写死了。。如果有几十,上百上张的话就不行我把要导的表名都存在一张表中。。用什么办法可以在导的时候动态调用???
imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 这个命令的tables写死了。。如果有几十,上百上张的话就不行我把要导的表名都存在一张表中。。用什么办法可以在导的时候动态调用???
imp pfile=mypfile.txt就可以了,如你的imp命令可以将参数保存到c:\mypfile.txt中,里面的内容是userid=system/manager@test
file=d:\daochu.dmp
tables=(table1)所以楼主这里就是要生成一个pfile文件就容易导入了,建立楼主用pl/sql语句拼出pfile文件的内容,然后保存到c:\mypfile.txt中去,举个例子,假设要导出的表保存在imptab表中,其内容为:tabname(字段)
EMP
DEPT
SALARY则sql语句为set serveroutput on
SET heading off
SET pagesize 0
SET FEEDBACK OFF
SPOOL c:\mypfile.txt
DECLARE
l_tabs VARCHAR2(2000);
BEGIN
DBMS_OUTPUT.PUT_LINE('userid=system/manager@test'||CHR(10)||
'file=d:\daochu.dmp'||CHR(10)||
'tables=');
FOR rowtab IN (SELECT tabname FROM imptab) LOOP
l_tabs := l_tabs || rowtab.tabname || ',';
END LOOP;
DBMS_OUTPUT.PUT_LINE(substr(l_tabs,1,length(l_tabs)-1));
END;
/
spool off
set serveroutput on
SET heading off
SET pagesize 0
SET FEEDBACK OFF
这个办法不知道对你是否可行
我的思路:imp parfile=/filepath/import9.par
import9.par这个文件里面
rows=y
file=c:\test.dmp
tables=(
table1,
table2,
table3,
.....
tablen
) 这样可以吗?
就是这样啊,我们的思路是一样的,只是我利用pl/sql把import9.par给构造出来了,主要是tables参数的内容,这个内容是从表里取得的,我这里假设保存要导入的表的名字为imptab,例名为tabname,楼主只要把我的例子中的SELECT tabname FROM imptab中的tabname替换为列名,imptab替换为表名,rowtab.tabname的tabname替换为列名,然后在SQL*PLUS中执行上面的命令就可以了,这样参数文件就在c:\mypfile.txt中了。如果是linux也一样,把spool c:\mypfile.txt替换为spool /filepath/import9.par
impdp system directory=data_pump_dir dumpfile=myfile.dmp logfile=aa.log full=y
rows=y
file=c:\test.dmp
tables=(
table1,
table2,
table3,
.....
tablen
) 里面的语法与imp不一样。。报错。。能否举个实例。。谢谢。。