我需要导入实用程序来删除旧数据,然后重新插入新数据。如果不使用数据泵,我怎么能这样做?
我无法使用数据泵的原因是因为我需要在应用服务器上运行此脚本,我没有权限在数据库服务器上运行此脚本。下面是我目前正在尝试解决的脚本
imp < username >/< password >@//< host > fromuser=< schema > touser=< schema > file=exp_$TODAY.dmp log=exp_import_$TODAY.log ignore=y
答案 0 :(得分:0)
IMP导入之前不能截断表,所以 - 你在这里运气不好。如果您可以使用数据泵导入,则可以使用TRUNCATE
参数集REPLACE
(这将删除现有数据)甚至SQL> select 'truncate table ' || tname ||';' from tab;
'TRUNCATETABLE'||TNAME||';'
----------------------------------------------
truncate table BONUS;
truncate table DEPT;
truncate table EMP;
truncate table SALGRADE;
truncate table WC;
SQL>
(删除表,创建表并加载数据) )。要求DBA提供对可用于导入目的的目录的访问权。
或者,由于您似乎正在导入所有内容,请考虑删除目标用户(使用级联选项),然后导入其对象。
或者,如果它不是太复杂,请创建一个截断表的脚本,例如
TRUNCATE TABLE
所以你在导入之前运行那些SQL> select 'alter table ' || table_name || ' disable constraint ' || constraint_name ||';'
2 from user_constraints
3 where constraint_type = 'R';
'ALTERTABLE'||TABLE_NAME||'DISABLECONSTRAINT'||CONSTRAINT_NAME||';'
---------------------------------------------------------------------------------------------
alter table EMP disable constraint FK_DEPTNO;
SQL>
语句。
请注意 - 如果存在外键约束 - 除非您禁用它们,否则它们不允许您这样做;如上所述,您可以使用SQL为您创建SQL:
order_of_keys = ["id", "question", "choice1", "choice2", "choice3", "choice4", "solution"]