импорт утилиты в оракуле - PullRequest
1 голос
/ 25 марта 2010

я делаю экспорт табличного пространства. Это табличное пространство содержит table1 с двумя строками, скажем rowa и rowb /

Теперь я удаляю rowb и вставляю новый rowc в это табличное пространство.

Теперь я делаю импорт этого табличного пространства.

после импорта я вижу, что table1 в табличном пространстве содержит rowa, rowb, rowc, но предполагалось, что он содержит rowa и rowb.

Кто-нибудь может сказать, почему так происходит?

1 Ответ

1 голос
/ 25 марта 2010

Я предполагаю, что вы используете старую утилиту командной строки IMP, а не Datapump?

IMP не удаляет существующую таблицу и не удаляет существующие данные. Если мы установим флаг IGNORE=Y, он вставит все данные в существующую таблицу и сообщит об ошибках (дубликаты ключей) в лог-файл.

Вот текущая таблица ...

SQL> select * from t0;

COL1
----
rowA
rowC

SQL> 

... а вот что я экспортировал ...

SQL> select * from t0;

COL1
----
rowA
rowB

SQL> 

Импорт с настройкой по умолчанию IGNORE завершается неудачно, поскольку таблица существует, но изменение флага выполнено успешно:

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> 

Примечание: одна строка была отклонена (потому что COL1 является первичным ключом), а один rwo был вставлен. Таким образом, таблица теперь имеет три строки:

SQL> select * from t0;

COL1
----
rowA
rowB
rowC

SQL>

Если вы импортируете / экспортируете процесс, который заменяет данные / структуры данных на импорт, вам следует вместо этого использовать Datapump. На самом деле вы должны использовать Datapump в любом случае, потому что в целом это гораздо лучшая утилита. Узнать больше .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...