2009-08-24 5 views
0

私はPKのそれは約300 Kの記録を持っていないデータベース内のテーブル(A)を持っています。コピーデータ

私は他のデータベースにそのテーブルのサブセットのコピー(B)を有し、これは50Kを有しており、所定の時間帯(7データ)のバックアップを含んでいます。

私はもちろんの既存のレコードを複製せずに、表Aに欠落しているレコードのBでは、テーブルからコピーします。 (私は物事を簡単にするためにデータベース・リンクを作成することができます)

私は正常にB.

から欠落している行に挿入するために従うことができますどのような戦略これらは、表の列です:

IDLETIME NUMBER 
ACTIVITY NUMBER  
ROLE NUMBER   
DURATION NUMBER  
FINISHDATE DATE  
USERID NUMBER 
.. 40 extra varchar columns here ... 

マイ最大の問題はPKの欠如です。すべての列を使用してハッシュやPKのようなものを作成できますか?

は何、この場合に進めることが可能な方法だろうか?

私はコピーする要素のおおよその数が事前20,000

おかげである。B

にテーブルAとOracle XEでのOracle 9iの(10)を使用しています

+0

表Aの行に固有の制約はありますか? – pilcrow

+0

"いいえ、そこには ' – OscarRyz

答えて

1

限り重複行がテーブルに存在してはならないとして、あなたはすべての列に一意キーまたは主キーを適用することができます。キー/インデックスのオーバーヘッドを維持するために非常にになります場合は、それが存在するかどうかを確認するために、アプリケーションでデータベースを照会でき、そしてデータ量が十分に小さい

+0

" ...アプリケーション内のデータベースにクエリが存在するかどうかを確認し、欠落している場合にのみ挿入することもできます。最初のオプションについて私はPKを作成する特権を持っていません – OscarRyz

2

場合は存在しない場合のみ、挿入を実行します、私は次のよう

CREATE DATABASE LINK A CONNECT TO ... IDENTIFIED BY ... USING ....; 
INSERT INTO COPY 
SELECT * FROM [email protected] 
MINUS 
SELECT * FROM COPY; 

でいいと思うあなたは約20,000コピーするにはあると言うが、データセット全体でどのように多くはありません。 もう1つの方法は、コピーの現在の内容を削除し、元のテーブルの内容全体を挿入することです。

hashで完全なデータセットがある場合は、データベースリンク全体でデータセット全体をドラッグして、ローカルデータベースにハッシュを適用しようとしているように思えます。

+0

+1データは約300kです。私はマイナス演算子を試しましたが、私には次のようなものがあります。エラー:ORA-12704:文字セットの不一致です。 – OscarRyz

+0

ehmよくわかっているのですが、数字と日付の列だけからエラーメッセージを受け取ることはできません。それは私がより多くの列を持っていることが判明:( – OscarRyz

関連する問題