Вставка данных в Oracle - PullRequest
       29

Вставка данных в Oracle

1 голос
/ 02 марта 2011

Я пытаюсь перенести БД из Informix в Oracle. У Informix была опция, например, при вставке в таблицу, если размер значения превышает длину столбца, тогда Informix автоматически обрезает данные. Но Oracle не поддерживает это и всегда Выдает исключение. Есть ли способ предотвратить и разрешить обрезку или мы должны уважать религиозно?

Ответы [ 3 ]

2 голосов
/ 02 марта 2011

Oracle поддерживает множество функций SQL, которые обрезают переменные. Я подозреваю, что вам нужен SUBSTR (). Проблема в том, что вам нужно будет явно указать желаемую длину. В этом примере предполагается, что T23.WHATEVER имеет значение VARCHAR2 (30), а значение T24.TOO_LONG_COLUMN больше:

insert into t23
  (id
    , whatever)
select pk_col
       , substr(too_long_col, 1, 30)
from t42
/
2 голосов
/ 02 марта 2011

В Oracle нет автоматической обрезки данных, вы должны явно обрезать ее самостоятельно, например,

insert into mytable (id, text) values (123, substr(var,1,4000));
1 голос
/ 03 марта 2011

Как и совет Тони, вы можете использовать CAST

select cast ('1234' as varchar2(3)) a
from dual

Если вы выполняете миграцию данных, посмотрите Журнал ошибок DML

Поместить все ваши несоответствующие данные в соответствующую таблицу с указанием причины сбоя просто мечтательно.

...