- - PR -
Oracleでデータコピーする方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-09-06 21:22
Oracleであるテーブルの特定レコードだけを取り出して
一部データを加工し(当然一意制約に引っかからないようにして) 再度当該テーブルへインポートする処理を行ないたいと 思っています。 この場合都度テンポラリテーブルをCreateしてInsertして データ補正後、元のテーブルにInsertして テンポラリテーブルを削除しないといけないのでしょうか? もっとスマートなやり方があれば教えていただきたいです。 実際は上記をスクリプトで流すことを考えているので 出来るだけコードが肥大化したり見づらくならない方法 を教えていただけると幸いです。 よろしくお願いします。 | ||||
|
投稿日時: 2004-09-07 09:40
Insert Select文では駄目なのですか?
それ以上を求めるのであれば 提示されている仕様が不明瞭です。 例えば、「当然一意制約に引っかからないようにして」←これ 何が当然なのか不明です。 一意制約とは、データ構成の制約でしかありませんから それ以上でもそれ以下でも無く、Oracleの仕様で決められた通りに動くのだけです。 つまり、人間様が考える、 ・事前に既存コードのレコードは排除、 ・一意制約違反のレコードがきたらワーニング出力で処理続行 ・一意制約違反のレコードがきたらエラーで処理破棄 ・一意制約違反のレコードがきたらオペレーション確認 は、SQLの責務範囲外です。 # 責務範囲外とは、SQLが責任を持って判断しないという事です。 | ||||
|
投稿日時: 2004-09-07 10:11
とあるマスタテーブルがあり、これにID番号を付与します。 ここに主キー設定を施しております。 このテーブルから一部データを抽出しコピーしたかったのですが そのままだと一意制約違反になるため別のID番号を付与 するという所作を施したかったということなのですが この記述が抜けており大変失礼しました。 確かに助言いただいたInsert Select文で処置できますね。 どうもありがとうございました。 |
1