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

初めて質問します。よろしくお願いします。

OS:Windows2000
現在、Oracle8iを使用しています。
PC1のOracle8iに作成したテーブルA内のデータを、
PC2のOracle8iに作成したテーブルBに全て
データをコピー又は移動させたいと考えています。

テーブル構造は、PC1、PC2共に全て同じです。
※PC1とPC2は同じLANでつながっています。

どういった方法があるでしょうか?

A 回答 (3件)

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句を作成する時に便利

いかがでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/09 17:08

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ユーザーズガイドに詳細が載っています)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/10 11:28

#1さんの方法で問題無いと思いますが、他の方法として



通常データのコピーの場合exportする方法を行いますが、
今回はテーブル名が異なるのでそのまま使えないので、

・PC1でテーブルBを作成し、テーブルAのデータをテーブルBにコピーし、expしてPC2でimpする。
・PC1でテーブルAをexpして、PC2でimpその後テーブルAのデータをテーブルBにコピー若しくは、テーブルAをテーブルBにrenameする。

では如何ですか?

この回答への補足

PC1のテーブル名と、PC2でのテーブル名は
同じになります。

その場合には、ご回答いただいた方法

> ・PC1でテーブルBを作成し、テーブルAのデータをテーブルBにコピーし、expしてPC2でimpする。
> ・PC1でテーブルAをexpして、PC2でimpその後テーブルAのデータをテーブルBにコピー若しくは、テーブルAをテーブルBにrenameする。

とは別の方法があるのでしょうか?
もし、あるのでしたら教えていただけますでしょうか?
よろしくお願い致します。

補足日時:2005/02/09 17:09
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/10 11:28

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

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