3

文字セットUTF-16を使用して、すべての文字列がNVARCHAR、NCHAR、またはNCLOBとして定義されたOracle DBを持っています。

今、文字セット UTF-8 を持つ新しい DB に移行したいと考えています。Unicode 文字を格納できるので、列の型を変換してデータをインポートできるかどうか迷っています。

私が疑わしい理由は、空でない場合、 VARCHAR2 の NVARCHAR2 列を変換できないことを知っているからです。

インポートを実行するための最良のオプションは何ですか。スキーマをインポートし、列の型を変更してからデータをインポートすると、データポンプは文句を言いますか?

感謝

4

1 に答える 1

0

はい datapump は、提案されたソリューションに感銘を受けません。インポート後またはエクスポート前にデータ型を変換するには、 to_char() または cast( MYNVARCHAR2 as VARCHAR2 ) を使用する必要があります。私の知る限り、変換できない文字は「?」に変換されるため、英字以外の文字を含むデータを変換しないように注意する必要があります。

おそらく最も簡単なのは、データをそのまま別のスキーマにインポートしてから、データを変換しながら正しい変更されたスキーマにコピーすることです。すなわち

impdp remap_schema=myschema:tempschema

myschema.mytable に挿入します (tempschema.mytable から myprimarykey、to_char(mynvarchar2) を選択します);

しかし、これは明らかにデータベースの 2 倍のスペースを使用します。

于 2014-02-18T12:00:18.740 に答える