Экспорт и импорт данных (8i -> 10g) и ошибка ORA-01461 - PullRequest
1 голос
/ 19 июля 2011

Доброе утро!

Мне нужно переместить данные из Oracle 8i (Enterprise Edition Release 8.1.6.0.0) в Oracle 10g (Enterprise Edition Release 10.2.0.3.0 - 64bi).

Каждый NLS_CHARACTERSET равен KO16KSC5601 (8i) и UTF8 (10g).

Я экспортировал данные в виде файла Excel и попытался их импортировать.Но я столкнулся с ORA-01461: can bind a LONG value only for insert into a LONG column в «некоторых» данных.

Кажется, эта ошибка произошла в столбце varchar2(4000).Поскольку он был успешно импортирован после того, как я укоротил данные столбца varchar2(4000) на несколько байтов, например "abcde".

Может ли другая кодировка вызвать другую длину данных? .. Пожалуйста, помогите мне.

Всегда, спасибо.

- Более того, я использую SQLGate, который может получить доступ как к 8i, так и к версии 10g (насколько я знаю).И конечно, я пробовал экспортировать данные в другие форматы (dbf, txt, csv, sql, mbd), но они были хуже.dbf, txt, csv делали ошибки на каждой записи.Там написано, что некоторые столбцы не имеют значения, но у них есть значения hava.

1 Ответ

1 голос
/ 19 июля 2011

Да, UTF8 - это многобайтовый набор символов. Это означает, что некоторые символы состоят из 4 байтов данных. KO16KSC5601 - это корейский однобайтовый набор символов, поэтому символ может состоять только из одного байта.

Большинство (все?) Корейских символов будут вне базовых 0-127 позиций для набора символов UTF8, поэтому я ожидаю значительного увеличения размера данных. Посмотрите на функцию VSIZE и используйте ее для некоторых примеров данных, чтобы получить представление об увеличении вашей ситуации.

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