- ベストアンサー
テーブルのデータコピーについて
初めて質問します。よろしくお願いします。 OS:Windows2000 現在、Oracle8iを使用しています。 PC1のOracle8iに作成したテーブルA内のデータを、 PC2のOracle8iに作成したテーブルBに全て データをコピー又は移動させたいと考えています。 テーブル構造は、PC1、PC2共に全て同じです。 ※PC1とPC2は同じLANでつながっています。 どういった方法があるでしょうか?
- みんなの回答 (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句を作成する時に便利 いかがでしょうか。
その他の回答 (2)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
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ユーザーズガイドに詳細が載っています)
お礼
ご回答ありがとうございました。 詳細をSQL*PLUSユーザーズガイドで見て、 もっと勉強します。
- na_kirajp
- ベストアンサー率43% (33/76)
#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する。 とは別の方法があるのでしょうか? もし、あるのでしたら教えていただけますでしょうか? よろしくお願い致します。
お礼
ご回答ありがとうございました。 早速試してみます。