1

データベーステーブルからデータを抽出しているときに、文字の不一致の問題に直面しています。

データベーステーブルから.txtファイルにデータをスプールし、unixシェルを使用してこのSQLを実行するPL / SQLコードを記述しましたが、スプールされたファイルを取得すると、結果セットは後ろのファイルから変更されます。終わり。

例えば:

At back end: SADETTÝN

In Spooled txt file :  SADETTŸN 

キャラクターを見るYと、変わったキャラクターです。すべての文字をバックエンドの状態で保持したいと思います。

私のデータベースの文字セット:

SELECT * FROM v$nls_parameters WHERE parameter LIKE 'NLS%CHARACTERSET'
PARAMETER              VALUE 
NLS_CHARACTERSET       WE8ISO8859P1 
NLS_NCHAR_CHARACTERSET WE8ISO8859P1 

そしてUnixNLS_LANGパラメータ:

$ echo $NLS_LANG
AMERICAN_AMERICA.WE8ISO8859P1

NLS_LANGパラメータをWE8ISO8859P9(トルコ語の文字セット)に変更しようとしましたが、役に立ちませんでした。

誰かがこの問題の解決策を教えてもらえますか?

4

2 に答える 2

3

「vi」などでファイルを視覚化しようとしていると思います。NLS_LANGパラメータは、データベースがファイルにエクスポートするためにのみ使用されます。エディタ(vi)の場合、LANGパラメータを対応する値に設定する必要があります。 NLS_LANGに。例:ISO8859P1アメリカ英語の場合、エクスポートLANG = en_US.ISO8859-1を実行する必要があります。言い換えると、ファイルは問題なく、トルコ語の文字をどう処理するかを知らないのは編集者です。

于 2012-09-17T12:01:57.350 に答える
2

NCHARデータ型を使用する必要があります。詳細については、 『OracleDocumentation- Unicodeを使用したSQLおよびPL/ SQLプログラミング』を参照してください。

SQL * Plusからのスプーリングの場合、NLS_LANG環境変数を正しく設定する必要があります。これがstackoverflowの同様の質問です。

于 2012-09-15T22:19:23.940 に答える