2015-07-17 7 views
1

Как вы знаете, у нас есть два типа VARCHAR2 в Oracleдлина столбца при миграции данных VARCHAR2 из Oracle

e.g. COL1 VARCHAR2(20 BYTE) 
    COL2 VARCHAR2(20 CHAR) 

Когда мы переносим эти данные в другой другой базе данных (например, Netezza), что должно быть правильной длины.

COL1 should be 20 

COL2 should be 20 OR 20X4= 80 ? 

, потому что 1 CHAR = 4 БАЙТ

Благодаря

+1

Проверьте это в источнике db. выберите data_length, decode (char_used, 'C', 'CHAR', 'B', 'BYTE') из user_tab_cols, где table_name = 'table' и column_name = 'column'; –

+0

Это правильная длина, которую мы должны перенести? – SMPH

+0

Это длина, которая использовалась при создании таблицы. Чтобы вычислить, сколько байтов используется для хранения одного символа. Выполните в случайной строке из этой таблицы и вычислите lengthb (col)/length (col). –

ответ

1

Чтобы получить представление о том, сколько байт ваших данных занимает до.

select max(lengthb(column)) from table 

Это даст вам максимальную длину в байтах всех значений в указанном столбце. Весьма маловероятно, что все символы занимают 4 байта.

+0

Другое дело в Netezza 'CHARACTER VARYING (n)' n - в символах NOT байтов. Таким образом, не будет проблемы, если получить ту же длину, что и Oracle, в случае «VARCHAR2 (20 CHAR)» https://www-304.ibm.com/support/knowledgecenter/SSULQD_7.1.0/com.ibm.nz .sproc.doc/c_sproc_data_types_aliases.html – SMPH

Смежные вопросы