私は2つのデータベースを持っているとAとBは言います。これらは同じです。データレコードが最新または古いことを期待しています。最新のもの(A)から試して、古いもの(B)にインプしたい。
次のコマンドで古いものにインポートすると
impユーザー名/パスワードfile = xxx.dmp fromuser = Auser touser = Buser
bはすでにすべてのテーブルを持っているため、これは実際にはインポートされません。
したがって、現在のDBをインポートおよび置換するコマンドがあることは誰でも知っています。ありがとうございました
ちなみに私はOracleを使っています
インポートは、スキーマ、オブジェクト、およびデータ全体をロードするためのものです。ある程度の柔軟性はありますが、個々のテーブルをロードし、データをロードするだけです。ターゲットスキーマにデータがあるテーブルの存在を適切に処理しません。これは、ターゲットスキーマの古いデータに、新しいソーススキーマで更新または削除されたレコードが含まれている場合に特に問題になります。
Oracle 10g以上を使用している場合の解決策は、代わりにData Pumpを使用することです。このユーティリティには、ターゲットスキーマの既存のテーブルまたは既存のテーブルのデータをソーススキーマのデータで置き換える機能など、はるかに強力な機能があります。 詳細 。
以前のバージョンのデータベースを使用している場合は、いくつかの回避策があります。 詳細を確認してください。 ただし、すべての制約を無効にして、後処理のラウンドでデータを修正する必要がある場合があります。
または、余裕がある場合は、問題のテーブルをBから削除し、importまたはimpdpを使用して再作成します。通常、スキーマ全体を削除(ドロップユーザーUUUUカスケード)してから、たとえば本番環境からテスト/開発データベースを「更新」するときに、新しいインポートを作成します。
Datapump(exp/impの代わりにexpdp/impdp)を使用して TABLE_EXISTS_ACTION = TRUNCATE (または必要に応じてREPLACE)を指定するだけです。