こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

select insert 句

自サーバDBでselectしたデータをそのまま他サーバDBへ直接insert出来ますか? 出来るんであればその方法を教えてください。

投稿日時 - 2013-06-06 16:58:48

QNo.8122199

困ってます

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

ANO.3です。
後でみたところ、1行抜けてしまいました。
訂正というか、下の行を追加します。

>回線エラーなのでロールバックしようとすると、
>ロールバックする情報は自サーバで、ロールバックする先は、他サーバなのに
>回線はつながらない

といったことがおきないことを確認しておく必要があるはずです。

>・・・2フェーズコミットのサポートはしていたはずなので大丈夫だったと思いますけどね。

投稿日時 - 2013-06-09 03:42:43

お礼

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

投稿日時 - 2013-07-05 06:40:03

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>自サーバDBでselectしたデータをそのまま他サーバDBへ直接insert出来ますか?
insert into 先テーブル名@他サーバへ接続するデータベースリンク名
select * from 元テーブル名

でできると思いますけど、
処理の途中で回線エラーが起きると大丈夫かな?とちょっと不安。
ま、うまくいくんでしょうけど検証しておいたほうがいいとは思います。
回線エラーなのでロールバックしようとすると、
ロールバックする情報は自サーバで、ロールバックする先は、他サーバなのに
回線はつながらない
・・・2フェーズコミットのサポートはしていたはずなので大丈夫だったと思いますけどね。

他サーバDBでinsertを行う際に、自サーバDBのテーブルをselectで参照したほうが
あまり気にする必要がなくなります。
他サーバで以下を実行する方法。
insert into 先テーブル名
select * from 元テーブル名@自サーバへ接続するデータベースリンク名

投稿日時 - 2013-06-09 02:50:18

お礼

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

投稿日時 - 2013-07-05 06:43:15

ANo.2

ORACLEのカテゴリなのでそれが前提ですが
CREATE DATABASE LINKでデータベースリンクを作成できる環境なら、他のサーバーのDBを参照することができます。
http://docs.oracle.com/cd/E16338_01/server.112/b56299/statements_5005.htm

投稿日時 - 2013-06-06 22:49:39

お礼

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

投稿日時 - 2013-07-05 06:41:35

ANo.1

SQLを実行したユーザで接続出来ればできるはずです。対象のスキーマ名をテーブル名の前に付けてあげればいいはず。
権限がないなどで接続が出来ない場合はダンプファイルを取り込むなりすればいいでしょう。

投稿日時 - 2013-06-06 20:48:34

お礼

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

投稿日時 - 2013-07-05 06:40:53

あなたにオススメの質問