2010-03-25 6 views
1

Je fais l'export d'un tablespace. Cet espace de table contient table1 avec deux lignes dites rowa et rowb/Utilitaire d'importation dans Oracle

maintenant je supprime rowb et insère nouvelle rowc dans cet espace de table.

Maintenant, je fais l'importation de cet espace de table. Après l'importation je vois la table1 dans tablespace contient rowa, rowb, rowc mais il était supposé contenir rowa et rowb.

Quelqu'un peut-il dire pourquoi cela se passe-t-il ainsi?

Répondre

1

Je présume que vous utilisez l'ancien utilitaire IMP de ligne de commande, plutôt que Datapump? IMP n'abandonne pas la table existante et ne supprime pas les données existantes. Si nous définissons l'indicateur IGNORE=Y, il insère les données qu'il peut contenir dans la table existante et signale les erreurs (clés dupliquées) dans le fichier journal.

Voici la table en cours ...

SQL> select * from t0; 

COL1 
---- 
rowA 
rowC 

SQL> 

... et voici ce que je ... exporté

SQL> select * from t0; 

COL1 
---- 
rowA 
rowB 

SQL> 

Une importation avec le réglage par défaut de IGNORE échoue car la table existe mais en changeant le drapeau réussit:

SQL> host 
Microsoft Windows XP [Version 5.1.2600] 
(C) Copyright 1985-2001 Microsoft Corp. 

C:\temp>imp userid=APC tables=t0 file=apc.dmp 

Import: Release 11.1.0.6.0 - Production on Thu Mar 25 18:22:21 2010 

Copyright (c) 1982, 2007, Oracle. All rights reserved. 

Password: 

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

Export file created by EXPORT:V11.01.00 via conventional path 
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set 
. importing APC's objects into APC 
. importing APC's objects into APC 
IMP-00015: following statement failed because the object already exists: 
"CREATE TABLE "T0" ("COL1" VARCHAR2(4) NOT NULL ENABLE) PCTFREE 10 PCTUSED " 
"40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUP" 
"S 1 BUFFER_POOL DEFAULT)      LOGGING NOCOMPRESS" 
Import terminated successfully with warnings. 

C:\temp>imp userid=APC tables=t0 file=apc.dmp ignore=y 

Import: Release 11.1.0.6.0 - Production on Thu Mar 25 18:22:33 2010 

Copyright (c) 1982, 2007, Oracle. All rights reserved. 

Password: 

Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

Export file created by EXPORT:V11.01.00 via conventional path 
import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set 
. importing APC's objects into APC 
. importing APC's objects into APC 
. . importing table       "T0" 
IMP-00019: row rejected due to ORACLE error 1 
IMP-00003: ORACLE error 1 encountered 
ORA-00001: unique constraint (APC.SYS_C001014543) violated 
Column 1 rowA   1 rows imported 
Import terminated successfully with warnings. 

C:\Documents and Settings\clarkean>exit 

SQL> 

Note: une ligne a été rejetée (parce que COL1 est une clé primaire) et un deux a été inséré. Ainsi, la table a maintenant trois lignes:

SQL> select * from t0; 

COL1 
---- 
rowA 
rowB 
rowC 

SQL> 

Si vous un processus d'import/export qui ne remplace les structures de données/données à l'importation, alors vous devriez utiliser Datapump à la place. En fait, vous devriez utiliser Datapump de toute façon, car c'est un utilitaire beaucoup plus efficace. Find out more.

+0

Merci APC .. Tout ce que vous avez dit est absolument correct. Mais la chose est que j'utilise l'utilitaire d'exportation et d'importation en mode Utilisateur (Propriétaire). Y at-il quelque chose de similaire à cela dans expdp et impdp – Abhiram

+0

@Abhiram - Sure. Il y a un mode SCHEMA. http://download.oracle.com/docs/cd/B28359_01/server.111/b28319/dp_export.htm#i1007509 – APC