Экспорт/импорт таблиц

teapot1
Дата: 29.09.2004 12:22:38
Добрый день всем!
Помогите пожалуйста разобраться с проблемой...
Произвожу экспорт таблицы из одной базы данных ..

exp sys/uragan@uubr tables=(SYSADM.ACC_GROUP) buffer=2048000 file=d:\d1.dmp log=d:\d1.log ROWS=y CONSISTENT=y GRANTS=y INDEXES=y CONSTRAINTS=y

Далее пытаюсь импортировать данную таблицу ...
imp sys/solaris@uubrmain buffer=2048000 file=d:\d1.dmp log=d:\d1imp.log fromuser=SYSADM INDEXES=y CONSTRAINTS=y

В результате формируется log

Экспоpт-файл создан EXPORT:V09.02.00 чеpез обычный маpшpут
импорт выполнен в кодировке CL8MSWIN1251 и AL16UTF16 кодировке NCHAR
импортирующий сервер использует кодировку WE8MSWIN1252 (возможно перекодирование)
. объекты, принадлежащие SYS, импортируются в SYS
. объекты, принадлежащие SYSADM, импортируются в SYSADM
. . импортируемая таблица "ACC_GROUP"импорт-но 105 строк
IMP-00017: при выполнении следующей команды ORACLE возвращает ошибку 2437:
"ALTER TABLE "ACC_GROUP" ADD PRIMARY KEY ("BU_ID", "ID") USING INDEX PCTFRE"
"E 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 131072 FREELISTS 1 FREELIST GR"
"OUPS 1) TABLESPACE "USERS" LOGGING ENABLE"
IMP-00003: ORACLE выдал ошибку 2437
ORA-02437: cannot validate (SYSADM.SYS_C006591) - primary key violated
Готовится включение ограничений...
Импорт завершился успешно с предупреждениями.

В результате не создается индекс ... Как решается данная проблема?
blast
Дата: 29.09.2004 12:37:23
может попробовать импорт без ключей?
Elic
Дата: 29.09.2004 12:46:43
Какой тип у "BU_ID", "ID"? В любом случае, что говорит на импортированной таблице
select "BU_ID", "ID" from "ACC_GROUP" group by "BU_ID", "ID" having count(*)>1
teapot1
Дата: 29.09.2004 12:58:32
Elic
Какой тип у "BU_ID", "ID"? В любом случае, что говорит на импортированной таблице
select "BU_ID", "ID" from "ACC_GROUP" group by "BU_ID", "ID" having count(*)>1


Дублируемых строки отсутствуют, а типы полей BU_ID VARCHAR2(4) ID VARCHAR2(24)
teapot1
Дата: 29.09.2004 12:59:43
blast
может попробовать импорт без ключей?

Импорт без ключей дает тот же результат.
Elic
Дата: 29.09.2004 14:41:12
teapot1
Дублируемых строки отсутствуют, а типы полей BU_ID VARCHAR2(4) ID VARCHAR2(24)
Чего-то ты недоговариваешь. Одно из двух: либо
select bu_id,id from acc_group group by bu_id,id having count(*)>1 or bu_id is null or id is null;
что-либо вернёт, либо пройдёт
alter table acc_group add primary key(bu_id,id);
- третьего не дано.

BTW, при конвертации из CL8MSWIN1251 в WE8MSWIN1252 русские буковки пропадут (заменятся на один и тот же левый символ), и если в этих полях такие буковки были, то ORA-02437 вполне закономерна. Сравни:
SQL> select chr(209)||chr(247)||chr(184)||chr(242) from dual;

CHR(
----
Счёт

SQL> select dump(convert(chr(209)||chr(247)||chr(184)||chr(242),'RU8PC866','CL8MSWIN1251')) from dual;

DUMP(CONVERT(CHR(209)||CHR(2
----------------------------
Typ=1 Len=4: 145,231,241,226

SQL> select dump(convert(chr(209)||chr(247)||chr(184)||chr(242),'WE8MSWIN1252','CL8MSWIN1251')) from dual;

DUMP(CONVERT(CHR(209)||CHR(2
----------------------------
Typ=1 Len=4: 191,191,191,191
aars
Дата: 29.09.2004 14:50:45
Нужно не ключи, а constraint-ы отключить.

А вообще-то, в чем проблема. Данные загрузились. PK не создался.
создай его вручную (разобравшись, откуда дубли взялись, может constraint во время экспорта был disable?).
blast
Дата: 29.09.2004 16:58:40
ENABLE NOVALIDATE
teapot1
Дата: 30.09.2004 14:09:38
Все получилось! Спасибо... Проблема заключалась в несоответствии кодировок.