1. 整理客户提供的列表,创建external table
列表整理如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CICOSADMIN.BN_PARTICULAR
CICOSADMIN.DL_AGENT
CICOSADMIN.EP_BILL
CICOSADMIN.EP_NOM_PTY
CICOSADMIN.IP_BILL
CICOSADMIN.BN_APPLN
CICOSADMIN.BN_ALLOCATE
CICOSADMIN.CARGO_EVENT
CICOSADMIN.EP_SHPMT
CICOSADMIN.EP_SPLIT_SHPMT
CICOSADMIN.EP_CLOSE_SHPMT
CICOSADMIN.EP_TRANS_DTL
CICOSADMIN.IP_BL_ITEM
CICOSADMIN.IP_CGO_NOM
CICOSADMIN.IP_NOM_SEC_CARR
CICOSADMIN.IP_CLOSE_BJ
CICOSADMIN.IP_DOCU_FEE
CICOSADMIN.IP_PROCESSING
CICOSADMIN.IP_SPLIT_BL
CICOSADMIN.IP_TRANS_DTL
CICOSADMIN.IP_TRANS_DELV
CICOSADMIN.VO_CLOSE_VSL
CICOSADMIN.VSL_CONV
CICOSADMIN.MPT_ADMIN_FEE_EVENT
CICOSADMIN.MPT_CARGO_EVENT
CICOSADMIN.MPT_CLOSE_BJ_EVENT
CICOSADMIN.MPT_CLOSE_SHPMT_EVENT
CICOSADMIN.MPT_CLOSE_VSL_EVENT
CICOSADMIN.MPT_DELIVERY_EVENT
CICOSADMIN.CSBS_CAR_FACTOR
CICOSADMIN.CSBS_CAR_FACTOR_DTL
CICOSADMIN.CSBS_CAR_OVERFLOW
CICOSADMIN.CSBS_CAR_OVERFLOW_DTL
CICOSADMIN.CSBS_CFS_CNTR_TRANSFER
CICOSADMIN.CSBS_CFS_DELIVERY
CICOSADMIN.CSBS_CFS_MISC_ITEM
CICOSADMIN.CSBS_CFS_PACK
CICOSADMIN.CSBS_CFS_RECEIVE
CICOSADMIN.CSBS_CFS_STORE_ORDER
CICOSADMIN.CSBS_CFS_UNPACKING
CICOSADMIN.CSBS_DELIVERY
CICOSADMIN.CSBS_FLEXIBLE_PRICE
CICOSADMIN.CSBS_LEASE_AGRMT
CICOSADMIN.CSBS_MISC_ITEM
CICOSADMIN.CSBS_RECEIVE
CICOSADMIN.CSBS_STORE_ORDER
将列表放在 DB的 /tmp/mydir目录下面,创建外部表。外部表如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
CREATE DIRECTORY mydir AS '/tmp/mydir'; GRANT READ,WRITE ON DIRECTORY mydir TO CICOSADMIN; CREATE TABLE raw_list(owner VARCHAR2(28),table_name VARCHAR2(28)) ORGANIZATION EXTERNAL ( TYPE ORACLE_LOADER DEFAULT DIRECTORY mydir ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY '.' MISSING FIELD VALUES ARE NULL(OWNER,TABLE_NAME) )LOCATION ('list'));
2. truncate 表
检测外键
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' DISABLE CONSTRAINT '||CONSTRAINT_NAME||';' FROM DBA_CONSTRAINTS WHERE CONSTRAINT_TYPE='F' AND R_OWNER='CICOSADMIN' AND R_CONSTRAINT_NAME IN (SELECT CONSTRAINT_NAME FROM DBA_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' AND OWNER='CICOSADMIN' AND TABLE_NAME IN (SELECT DISTINCT TABLE_NAME FROM RAW_LIST));
注意这里的 owner cicosadmin需要根据实际情况填写。(这里的外键类型是R不是F)
生成truncate 脚本
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
SELECT 'TRUNCATE TABLE '||OWNER||'.'||TABLE_NAME FROM RAW_LIST;
3. check trigger
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
SELECT 'ALTER TRIGGER '||OWNER||'.'||NAME||' DISABLE ;' FROM DBA_DEPENDENCIES WHERE TYPE='TRIGGER' AND REFERENCED_OWNER='CICOSADMIN' AND REFERENCED_NAME IN (SELECT TABLE_NAME FROM RAW_LIST );
4. 导入数据
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
for tab in `cat list` do echo "truncate table CICOSADMIN.$tab;" | sqlplus / as sysdba imp \'/ as sysdba\' fromuser=CICOSADMIN touser=CICOSADMIN statistics=none ignore=y log=./log/$tab.log file=../dump/$tab.exp tables=$tab done