あるテーブルから別のテーブルへのデータのインポート

1234 ワード

A表からエクスポートしたdmpファイルをB表にどうインポートするかという質問を偶然見かけましたが、一見、確かにだめのようですが、実は方法があります.まずテスト環境を作りましょう.
    SQL> create table t_a as select * from tab;
    Table created.
    SQL> create table t_b as select * from tab where rownum < 1;
    Table created.
ミッションはT_AテーブルからエクスポートされたレコードをT_にインポートB表にあるので、SYSTEMユーザーに同義語を作りました.
    SQL> create synonym t_a for mydul.t_b;
    Synonym created.
次のエクスポートとインポートコマンドは、自分で試してみてください.
    exp mydul/mydul file=t_a.dmp tables=t_a
    imp system/oracle file=t_a.dmp fromuser=mydul touser=system ignore=y
データがインポートされているかどうかを確認します.
    SQL> select count(*) from t_b;
      COUNT(*)
    ----------
            17
    SQL> select count(*) from t_a;
      COUNT(*)
    ----------
            17
Oracleのimpがデータをインポートする場合も、Insert文を実行するだけで、同義語とテーブルに分けられますか?

drop table t_a;
drop table t_b;
create table t_a as select * from employee;
create table t_b as select * from employee where rownum<1;
select count(*) from t_a;
select count(*) from hr_employee;
select * from t_b;

             :create synonym t_a for user1.t_b