質問: 汎用機からのデータ移行 汎用機からunixサーバへのシステム移行を予定しています。 サーバ側のdbとしてoracleを採用予定です。 汎用機側で使用しているdbの内容を、サーバ側に合わせコード変換した後に csvファイルとしてサーバに転送し、oracleのdbにロードして初期dbの 構築をおこなう予定です。 (ロードには付属のユーティリティ(ローダ)を使用予定) この際、oracle側でデータ型を’number’で定義している項目に対しては、 csvファイル側の該当項目と桁数を合わせなくても問題は無いでしょうか? 例) ・oracle 側の定義 商品コード char(3) 定価 number(5) ・csvファイルの内容 a01,1500 b01,100 それとも、桁数を合わせ ・csvファイルの内容 a01,01500 b01,00100 としなくてはならないのでしょうか? もう一点、 全角文字は、char属性の項目に、シフトー度付きでセットすればよいのでしょうか? どうぞ宜しくお願いいたします
回答: こんにちは、ホスト→unix(oracle)データ移行経験者です。 > (ロードには付属のユーティリティ(ローダ)を使用予定) sql*loaderでしょうか? 以下のことは、sqlローダを前提で書いていますので、 違う場合は読み飛ばして下さい。 ●number型 number型にロードする際には、桁数合わせをする必要はありません。 ●char型 桁数からあふれていなければ、質問文に書かれた形式でロードできます。 全角文字も同様ですが、1文字2バイトであることだけ気にすればいいです。 char型は、固定長の文字列データ型です。 char(10)であれば、”ひこうき ”と、最後に空白を2バイト自動的に埋めます。 項目として空白が必要であるのならば別ですが、データベースの容量節約の観点から言いますと 可変長の文字列データ型であるvarchar2を使用した方が良いと思います。