• ベストアンサー

テーブルのデータコピーについて

初めて質問します。よろしくお願いします。 OS:Windows2000 現在、Oracle8iを使用しています。 PC1のOracle8iに作成したテーブルA内のデータを、 PC2のOracle8iに作成したテーブルBに全て データをコピー又は移動させたいと考えています。 テーブル構造は、PC1、PC2共に全て同じです。 ※PC1とPC2は同じLANでつながっています。 どういった方法があるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tyurajima
  • ベストアンサー率28% (16/57)
回答No.1

PC1からPC2のテーブルを見れますか? 見れるなら、  INSERT INTO テーブルB@AAA SELECT * FROM テーブルA;  注:AAAはテーブルBのDATABASE LINK名 見れない場合  テーブルAの内容をエクセルに貼り付け、テーブルBにINSERT句で挿入する。  SQL PLUSしかテーブルを参照するツールがない場合   1.SQL PLUSを起動する(テーブルA)   2.SQL> SPOOL ON コマンドを発行。   3.ファイル→スプール→スプールファイルでファイルを作成する。   4.SQL> SELECT * FROM テーブルA コマンドを発行。   5.3で作成したファイルにデータが保存されているので、それを使用してINSERT句を作成。   6.SQL PLUSを起動する(テーブルB)   7.INSERT句を発行   8.COMMIT   SELECT句は*で全項目をまとめて取得するのではなく、項目1,'<>',項目2というように   項目と項目の間に特定文字(例では"<>")を入れておくと後でINSERT句を作成する時に便利 いかがでしょうか。

9darts
質問者

お礼

ご回答ありがとうございました。 早速試してみます。

その他の回答 (2)

回答No.3

2つのDBに接続できるクライアントがあるでしょうから、 そのクライアントでSQL*PLUS上で、コピーコマンドを使う。 (クライアントでなくても、PC1,PC2でも、相手サーバにログインできるならOK) SQL> COPY FROM SCOTT/TIGER@PC1 TO SCOTT/TIGER@PC2 APPEND EMP USING SELECT * FROM EMP; という感じで良いと思います。 (SQL*PLUSユーザーズガイドに詳細が載っています)

9darts
質問者

お礼

ご回答ありがとうございました。 詳細をSQL*PLUSユーザーズガイドで見て、 もっと勉強します。

  • na_kirajp
  • ベストアンサー率43% (33/76)
回答No.2

#1さんの方法で問題無いと思いますが、他の方法として 通常データのコピーの場合exportする方法を行いますが、 今回はテーブル名が異なるのでそのまま使えないので、 ・PC1でテーブルBを作成し、テーブルAのデータをテーブルBにコピーし、expしてPC2でimpする。 ・PC1でテーブルAをexpして、PC2でimpその後テーブルAのデータをテーブルBにコピー若しくは、テーブルAをテーブルBにrenameする。 では如何ですか?

9darts
質問者

お礼

ご回答ありがとうございました。

9darts
質問者

補足

PC1のテーブル名と、PC2でのテーブル名は 同じになります。 その場合には、ご回答いただいた方法 > ・PC1でテーブルBを作成し、テーブルAのデータをテーブルBにコピーし、expしてPC2でimpする。 > ・PC1でテーブルAをexpして、PC2でimpその後テーブルAのデータをテーブルBにコピー若しくは、テーブルAをテーブルBにrenameする。 とは別の方法があるのでしょうか? もし、あるのでしたら教えていただけますでしょうか? よろしくお願い致します。

関連するQ&A