drno-reg
@drno-reg
см не кратко

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

Здравствуйте.

Сегодня нужно было мигрировать объекты схемы на другой инстанс Oracle.

Воспользовался возможностями Oracle SQL Developer.

Насколько же я был удивлен тем фактом, что по одной таблицы не возможно было выполнить Insert т.к. Oracle вернул ошибку, что размер поля в таблице меньше, чем размер данных в Insert.
Таблица
create table EMPLOYEE
(
  id_employee VARCHAR2(100) not null,
  position    VARCHAR2(20),
  direction   VARCHAR2(20),
  date_from   DATE,
  date_to     DATE,
  region_id   NUMBER
)


Поле было с типом varchar2(20), размер данных в Insert 35.

Insert into EMPLOYEE (ID_EMPLOYEE,POSITION,DIRECTION,DATE_FROM,DATE_TO,REGION_ID) values ('вававав вавававава.123456789','вававав вавававава','aaaaaaaaaaaa',to_date('01.01.11','DD.MM.RR'),null,'01');


Подскажите как такое возможно?
  • Вопрос задан
  • 933 просмотра
Решения вопроса 1
@x_shader
Oracle & Coffee
Например, вы переехали с БД с однобайтовой кодировкой на другую - с UTF8.
Сравните вывод запросов на разных БД:
select name, value$ from sys.props$ where name = 'NLS_CHARACTERSET';

select 
    length('ффф') as in_char,
    lengthb('ффф') as in_byte
from dual;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы