Skill Note

平凡なエンジニアがメモ代わりにプログラミング, インフラ, ネットワークを書き綴るブログ

Oracle 11g XEへのデータ移行方法を検討してみる

   

Oracleのデータ移行時は移行元と移行先の文字コードに注意する必要があります。

Windows環境のOracleでは「JA16SJIS」や「JA16SJISTILDE」が標準の文字コードであり、Oracle 11g Express Edition(XE)では「AL32UTF8」が標準の文字コードです。

文字コードの違いは、sjisが1文字あたり1~2バイトで扱い、UTFは1文字あたり1~3バイトで扱います。
1文字あたりのバイト数が異なる為、文字列型(VARCHAR, VARCHA2)のデータを移行する場合にバイト数オーバーでエラーになる場合があります。

ここでは文字コードが「JA16SJISTILDE」のDBから「AL32UTF8」のXEへデータを移行すると想定した場合の移行方法を記載します。

案1 文字コードを変更する

移行元と移行先の文字コードを同じにしてデータ移行を行います。

Oracle 11g XEで文字コードを変更する場合は、1サーバ1インスタンスの制約がある為、データベースを再作成する必要があり、再作成時に文字コードを「JA16SJISTILDE」に指定します。

案2 定義を変更する

文字型を扱う単位をバイト数から文字数に変更してデータ移行を行います。

文字型の項目をVARCHAR2→NVARCHAR2に定義を変更してデータ移行を行います。
移行元で定義変更が難しい場合は、先に表定義のみインポートして定義変更後にデータを移行します。

1.表定義のエクスポート

2.表定義のインポート

3.表定義の変更
VARCHAR2の項目をNVARCHAR2に変更する

4.データのエクスポート

5.データのインポート

または、Oracleパラメータ「NLS_LENGTH_SEMANTICS」を変更してデータ移行を行います。
 icon-check-square-o パラメータを設定後にテーブルを作成する必要があります。テーブルをインポートして作成した場合は設定は反映されません。

Google AdSense PC

Google AdSense PC

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

sqlserer
[SQL Server]除算時の注意点

SQLServerで除算結果が小数になる場合 たとえば、1100グラムをキロに換算する場合は「1100 / 1000」で計算すれば「1.1kg」と求められるが …

db
[Database]データベースのバージョン/エディションを確認する方法

OracleとSQLServerのバージョン/エディションを確認 Oracle

SQLServ …

sqlserer
[SQL Server]クロス集計の方法

PIVOTを使ってクロス集計する SQL ServerでExcelのピボットテーブルのようなクロス集計をするには、PIVOT関係演算子を使って集計することができ …

oracle
[Oracle]OracleからWebサービスを利用する方法

SOAPリクエストを送信してレスポンスを表示する 前回はOracleからWebサイトにアクセスする方法を記載しましたが、今回はOracleからSOAP形式のWe …

oracle
[Oracle]ジョブをスケジューリングして定期実行する方法

DBMS_SCHEDULERパッケージを使用したジョブスケジューリング Oracleでジョブを定期実行するには、DBMS_SCHEDULERパッケージやDBMS …

oracle
Oracle12cでユーザを作成する方法

SQLコマンドを使用したユーザ作成 Oracle12cからマルチテナント・アーキテクチャが採用されており、以前までの手順ではユーザが作成できません。 ここではP …

sqlserer
[SQL Server]IDENTITYの値を初期化する

ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …

oracle
ODP.NETをNuGetからインストールする

ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …

oracle
[Oracle]端数処理、丸めの方法

ORACLEで数値の端数処理、数値丸めをする 数値を四捨五入する場合は、ROUND関数数値を切り捨てる場合は、TRUNC関数各関数の第2引数の値で、小数部、また …

oracle
[Oracle]トリガーの実行順序を設定する方法

FOLLOWS句を使用して実行順序を設定する 1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。 実 …