2017-02-14 16 views
2

一部のデータベースを統合しようとしていますが、CHARACTERセットにいくつか問題があります。Oracle:WE8ISO8859P1からAL32UTF8への変換

私のデータベースは次のようになります。

ソース・データベース

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 
NLS_CHARACTERSET WE8ISO8859P1 
NLS_NCHAR_CHARACTERSET AL16UTF16 
NLS_LENGTH_SEMANTICS BYTE 

先データベース

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 
NLS_CHARACTERSET AL32UTF8 
NLS_NCHAR_CHARACTERSET AL16UTF16 
NLS_LENGTH_SEMANTICS BYTE 

私は、スキーマへの輸出を作ったが、私はにインポートするとき新しいデータベース私は次のような多くのエラーを持っています:

ORA-02374: conversion error loading table owner.table_name 
ORA-12899: value too large for column col_name (actual: 403, maximum: 400) 

私はcsscanユーティリティを実行しました。ここでの結果は次のとおりです。

TABLE Convertible Truncation  Lossy 
------ ------------- ------------- ------------ 
    1   0    18   24 
    2  2,248   120  19,854 
    3  2,155   120  19,551 
    4  5,431   294  41,531 
    5  5,925   114  18,352 
    6   129    4  5,095 
    7   109    4  5,017 
    8  2,149   151  5,219 
------ ------------- ------------- ------------- 

ので、インポートする前に先にVARCHAR2の値を見つけるための方法はありますか?私はテーブルの構造を変えることができます。私の例ではテーブルを変更して列のサイズを400から403に変更できます。

さらに詳しい情報が必要な場合は、コメントを残してください。

ありがとうございます!

+0

まだ私の問題の解決策はありません。何か案は?前もって感謝します! – adimoise91

答えて

0

csscanツールは変換後のTructionレコードの大きさを表示し、それを使用してフィールドのサイズを変更することができます。

CSSCAN .ERRサンプル出力:

User : SAMPLE_USER 
Table : SAMPLE_TABLE 
Column: SAMPLE_COLUMN 
Type : VARCHAR2(40) 
Number of Exceptions   : 5 
Max Post Conversion Data Size: 43 

希望これを次の例では、変換されているすべてをカバーするためにVARCHAR(43)にVARCHAR(40)からSAMPLE_COLUMNのあなたのサイズを変更する必要があります助けてください。

関連する問題