プロが教えるわが家の防犯対策術!

こんばんは。

exportしたダンプファイルを頂いたので
oracleにimportしようと思っています。
色々調べて以下のようにわかったのですが、
間違っていないか、パラメータで追加した方が
よいものがあれば、ご指摘お願いします。

1)
既に同じ内容のテーブルが存在するが、それは気にせずimportを行う。既存のテーブルデータは新しくimportするもので更新されている???

2)
SQL*PLUSでコマンドを叩く。
コマンド内容は以下の通り。
imp system/manager fromuser=test1 touser=test2 file=db_data.dmp log=implog.log

test1 ← DBA権限あり。
test2 ← このユーザーの表領域にデータを作成したい。

A 回答 (3件)

>上記オプションで、既存のテーブルは古いデータが削除され、



ignore=yにしてもimpコマンドではデータの削除は行われません。
一意制約違反となります。
あらかじめ不要なデータは消しておきましょう。

truncate table テーブル名;
でデータを切り捨てるのがいいかと。


>新規に増えたテーブルは
>新規に作成(データ込み)と考えて正しいでしょうか?

はい。こちらはこうです。
    • good
    • 4
この回答へのお礼

お返事が遅くなってすいません。

アドバイス頂いたおかげで、成功しました。
ありがとうございました。

お礼日時:2004/09/07 05:43

>1)


>既に同じ内容のテーブルが存在するが、それは気にせずimportを行う。
>既存のテーブルデータは新しくimportするもので更新されている???

一意制約違反でエラーとなるでしょう。
あらかじめテーブルをdropしてあった場合は、インポート時にcreateされますが、レイアウトが違う場合は注意が必要です。

>2)
>SQL*PLUSでコマンドを叩く。
>コマンド内容は以下の通り。
>imp system/manager fromuser=test1 touser=test2 file=db_data.dmp log=implog.log

impはSQL*Plusのコマンドではありません。外部コマンドです。
Windowsであれば、コマンドプロンプトから実行してください。

テーブルをあらかじめdropしておかないのであれば、ignore=yを追加してください。

>大量の表がある場合、どのようにして削除するのが
>よいでしょうか?

drop table テーブル名1;
drop table テーブル名2;


と記述したテキストファイルを準備し、
SQL*Plusでファイル名を指定して実行すればよろしいかと。


>olacle7は間違いなく使えません。

使用可能なオプションは、
imp ユーザ名/パスワード help=y
で表示されます。確認してください。

この回答への補足

ありがとうございます。

>テーブルをあらかじめdropしておかないのであれば、
>ignore=yを追加してください。

上記のオプションを見てみたのですが、処理が続行される
ことは分かりました。
やりたいこととしては、大量のテーブル&データがある状態で、最新のものを頂いたので、最新の状態にしたいと
思っています。

既存のテーブルも大量にあり、新規のものが少し混ざった
状態です。上記オプションで、既存のテーブルは古いデータが削除され、新しいデータが入った状態となり、新規に増えたテーブルは
新規に作成(データ込み)と考えて正しいでしょうか?

補足日時:2004/09/02 10:34
    • good
    • 0

1)


更新されずにエラーになると思います。
中身はInsert文なので。

2)
olacleはtouser使えたっけ?
olacle7は間違いなく使えません。

この回答への補足

まず、表を削除しないといけないのですね。
この場合、test2のユーザーのスキーマに作成
されている表を削除することになると思うのですが、
大量の表がある場合、どのようにして削除するのが
よいでしょうか?

補足日時:2004/09/02 07:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A