異なる状況のキャラクタ・セットのデータのインポートが失敗しますので、多くの人々が直面してきました。第三のdmpファイルの文字セット;これは、第二は、Oracleクライアント側の文字セットで、文字セットの三つの側面、1 oracelサーバー側の文字セットを必要とします。データのインポートを行うことで、同じ3つの文字セットが正しくインポートすることができますが必要です。
1、クエリOracleサーバー側の文字セット
Oracleサーバー側の文字セットを見つけるために多くの方法は、より直感的な方法があること、クエリで、あります。SQL>はデュアルからUSERENV(「言語」)を選択します。
次のような結果:AMERICAN _ AMERICA ZHS16GBK。
DMP文書文字セットを照会する方法2、
OracleのEXPが2と3を記録したDMPファイルの文字セットのDMPファイルをバイト、また、文字セット情報が含まれているツールのDMPファイルを使用して派生しました。このようなMまたはMのわずか数十としてのDMPではないファイルが、オープンウルトラ(16進数)に使用することができる場合には、例えば0354のように、コンテンツの第二及び第三のバイトを見て、それから文字は、次のSQLそれに対応設定:
SQL>を選択しNLS_CHARSET_NAME(TO_NUMBER( '0354'、 'XXXX'))デュアルから。
ZHS16GBK
DMPファイルは、このようなオープン非常にゆっくりまたは完全にオープンなテキストエディタで2G以上(これは最も一般的なケースである)、など、大きい場合は、(UNIXホストで)次のコマンドを使用できます。
猫exp.dmp | OD -x |ヘッド-1 | awkの '{$ 2 $ 3印刷}' | 3-6 -cカット
SQLは、それに対応する文字の上記セットを用いて得ることができます。
3、クエリのOracleクライアント側の文字セット
これは比較的簡単です。NLS_LANGのするOracleHomeを対応するレジストリであるWindowsプラットフォームでは、。:あなたはまたのような、DOSウィンドウの内部で独自に設定することができます
セットNLS_LANG = AMERICAN_AMERICA.ZHS16GBK
これは、ウィンドウ内のみの環境変数に影響を与えます。
UNIXプラットフォームでは、環境変数NLS_LANGです。
$エコー$ NLS_LANG
AMERICAN_AMERICA.ZHS16GBK
検査の結果は、サーバー側とクライアント側の文字セットが矛盾して見つかった場合は、サーバー側の文字セットと同じに変更統一してください。
4.設定し、クライアントの文字セットのインポートおよびエクスポート
- クエリ文字セット
NLS_DATABASE_PARAMETERSから*を選択する場所パラメータ= 'NLS_CHARACTERSET';
--linuxクライアント
のenv | grepするNLS_LANG
エクスポートAMERICAN_AMERICA.ZHS16GBK NLS_LANGを=
--Windowsクライアント
エコー%NLS_LANG%
セットNLS_LANG = AMERICAN_AMERICA.ZHS16GBK
あなたがLinux環境NLS_LANGを見つけることができない場合は、あなたがクライアントの文字セットの環境で再設定することができます(エクスポートNLS_LANG = AMERICAN_AMERICA.ZHS16GBK)