• ベストアンサー

別のDBからテーブルをコピーする方法

SQL Server2005 Express Edition を使っています。 異なるDB間(同じコンピュータ内)で、テーブルをコピーしたいの ですが・・・ コピー元DB名:DB_A コピー元テーブル名:dbo.顧客 コピー先DB名:DB_B テーブルのコピーは select * into ・・・ from ・・・ を使えばできそうですが、別DBの場合の方法がわかりません。 お教えいただければ幸いです。 よろしくお願いいたします。

  • pon_s
  • お礼率88% (101/114)

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

別のDBでも同じインスタンス内ならば同じです。 SELECT * INTO DB_B.dbo.顧客 FROM DB_A.dbo.顧客

pon_s
質問者

お礼

回答ありがとうございました。 解決できました。お世話になりました。

関連するQ&A

  • 別のデータベースのテーブルの統合 No.2

    SQL Server 2005 Express で、別のデータベースへのテーブルの移行するにあたり、 INSERT INTO データベースB.dbo.テーブルX SELECT * FROM データベースA.dbo.テーブルX とすればよいというご回答をいただいています。 で、 IDENTITYを設定しているテーブルがあるとちょっと工夫が必要です。 とのコメントをもいただきましたが、 この「工夫」が分かりません。 どんな方法なのでしょうか? IDENTITYをはずす方法や、リレーションシップをはずす方法などが思い浮かぶのですが、テーブル構造が複雑で、わけがわからなくなります。 元のIDの値は維持しなくてもよいので、何かよい方法はありますでしょうか? よろしくお願いします。

  • DB構造移行したいが、同じ構造にならない

    SQL Serverについて教えていただきたく、よろしくお願いいたします。 既存のデータベースと同じ構造のデータベースを別のサーバに構築すべく以下の作業を行ないましたが同じにはなりませんでした。足りない点などご指摘いただければありがたく存じます。 【同じでないと判断した理由】 「移行元DB」と「移行先DB」からDB作成スクリプトを生成し、スクリプトを比較したが同一ではなかった(列制約の記述) 例えば、移行元DBでは次の2行とも存在しますが、移行先DBでは2行目の([列名])を含む行が生成されません。 GRANT SELECT ON [dbo].[テーブル名] TO [public] AS [dbo] GRANT SELECT ON [dbo].[テーブル名] ([列名]) TO [public] AS [dbo] 上記のGRANT以外については同一でした。 【行なった作業】 SQL Server Management Studioにて、「移行元DB」を右クリック→タスク→スクリプト生成→全てのオブジェクトの生成→詳細設定にてインデックス・トリガ・オブジェクトレベル権限の各スクリプトをTrueにし、サーバのバージョン互換のスクリプトを"SQL Server 2000"に→スクリプト生成。 生成したDBでも上記の手順にてスクリプトを生成し、両者を比較した。 【環境】 元DB:SQL Server 2000 移行先DB:SQL Server 2008R2 上記作業を行なったサーバ:SQL Server 2008R2 当方、SQL Serverは初心者です。変な言い回しなどありましたらどうぞご容赦ください。 ご回答いただければ幸いに存じます。どうぞよろしくお願いいたします。

  • 2台のサーバー間でのテーブル結合方法

    2台のサーバーでそれぞれSQL Server2000 とSQL Server2005を動かしています。 2台のサーバーの中の別のDBの中にあるテーブルを結合したいのですが、可能なのでしょうか? ちなみに [データベース名1]のサーバーに接続した状態で SELECT a.*,b.* FROM [データベース名1].[dbo].[テーブル名1] AS a INNER JOIN [ServerIPアドレス].[データベース名2].[dbo].[テーブル名2] AS b ON a.ID=b.ID とやると 「sys.serversにサーバー 'ServerIPアドレス' が見つかりませんでした。 正しいサーバー名を指定したかどうかを確認してください。 必要であればストアド プロシージャ sp_addlinkedserver を実行し、 サーバーを sys.servers に追加してください。」 というエラーになってします。 宜しくお願いします。

  • (SQLSERVER) 別サーバーへテーブルコピー

    標題の別サーバーのDBへテーブルをコピー(更新)したいと考えておりますが、やり方が全く分かりませんのでお教えください。 【更新元】 販売管理サーバー OS:Windwos2008R2 SQL SERVER 2008R2 サーバー名:POS DB名:POSDATA テーブル名:POS売上伝票 【更新先】 社内開発用サーバー OS:Windwos2008R2 SQL SERVER 2012Express サーバー名:AD DB名:POS テーブル名:POS売上伝票 POS上のSQL ManagementStudeoから、AD上のSQLSERVERへのアクセスは可能な状態にしております。 ◎実装したい要件 POSサーバー上のデータを、毎日定時にADサーバー上のDBに追加更新 ※理想としては、バッチ等のスクリプトをタスクに登録し定時に実行 自分なりに調べてみたのですが、データを丸ごとコピーする場合は、"bcp"コマンドを実行すれば可能なようですが、bcpコマンドで、サーバー間のコピーの方法が良くわかりませんでした。 また、出来れば日々更新する為、データが変更されたレコードはUPDATE追加されたデータは、INSERTする事が理想です。 ※夜間のバッチ処理ですので、上記の方法が私の知識的に難しようであれば、テーブルを作り直ししてもよいと考えております。 効率的な方法をご存じの方がいらっしゃいましたらアドバイスをお願いいたします。

  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • 異なるmdbファイルにテーブルをSQLでコピー

    SELECT * into table1 from tabel2 のようにして、同じmdbの中でテーブルをコピーすることはできますが、 異なるmdbファイルにテーブルをSQLを使ってコピーすることはできるものですか。 #できないという回答もお待ちします。 #access2000

  • DAOでSQLServerに接続し、LeftJoinで別DBのテーブル

    DAOでSQLServerに接続し、LeftJoinで別DBのテーブルを参照したい。 いつもお世話になっております。 標題についてなのですが、 VB6.0、SQLServer2008Expressで開発を行なっております。 接続にはDAOを利用しています。 その際に、AというDBのT1というテーブルとBというDBのT2というテーブルのデータを結合して抽出したいのですが、エラーが出てしまいます。 ソースは以下の通りです。 Dim DBR As Database Dim T_TEST As Recordset Set DBR = Workspaces(0).OpenDatabase("", False, False,         "ODBC;Driver={SQL Server};SERVER=hoge;DATABASE=A;UID=sa;PWD=admin") Set T_TEST = DBR.OpenRecordset("select * from T1 left join B.dbo.T2 on T1.AAA = T2.AAA") で実行すると、T_TESTをOPENするところで、実行エラー3024が発生します。 エラー内容は「ファイル C:\*******\B.dboが見つかりません」と、ソースが保存されているフォルダにB.dboがありませんといった内容です。 クエリは、ManagementStudioでは問題なく抽出できました。 DBRでAを開いて、Bが開けていないからだとは思うのですが、どのようにすれば複数のDBに存在するテーブルのデータを結合して取得できるでしょうか。 ご教授お願いいたします。

  • SQLServerで別インスタンスのデータベースのテーブルの結合はできますか?

    [インスタンスA] UserID=sa PassWord=****** DataBase=DB01 で接続されるテーブルDB01.Table1 と [インスタンスB] UserID=HogeUser PassWord=@@@@@@ DataBase=DB02 で接続されるテーブルDB02.Table2 の2つのテーブルを結合してプログラムから処理を行いたいのですが、 可能なのでしょうか。 SQLのイメージは select * from [インスタンスA].[db01].[dbo].[Table1] tbl1 join [インスタンスB].[db02].[dbo].[Table2] tbl2 on tbl1.id=tbl2.id という感じです(もちろん動作しませんが) インスタンスAとインスタンスBは同一マシンにあり、SQLServer2008SP1とします。 開発環境はVS2008SP1でSqlClient.SqlConnectionを使用して接続し、 SqlCommandにてSQLを作成し、実行するような形です。 どうかよろしくお願いいたします。

  • SQLサーバでテーブルをコピーする

    SQLサーバ超初心者です。 A支店用のテーブルを作成(dbo.data_A)したのですが B支店(dbo.data_B)、C支店用(dbo.data_C)のテーブルを作成したいです。 Accessなどのように、コピーペーストなどはできないのですよね? ご教授お願いいたします!

  • SQLでスキーマ名(所有者名)の修飾無しでテーブル参照したい

    select * from [テーブル名] で問い合わせをしたいんですが、 select * from [スキーマ名].[テーブル名] でなければエラーになってしまいます。 (「オブジェクト名 'テーブル名' は無効です。」といった、テーブルが無い旨のエラーが出ます。) 所有者(スキーマ名?)をdboに変更してするとテーブル名だけで参照できます。 例えば、テーブルの所有者を'test_user'に変更した場合、 test_userでログインしているにもかかわらず(クエリアナライザ)、修飾が無いと参照できません。 'test_user'はsystem administratorsロールに入れてあります。 SQLServerをインストールし直して DBを一から構築してもそうなります。 何か施さないといけないことがあるのでしょうか。 思い当たることがございましたら、ご教示頂ければと思います。 環境は SQL Server 2000 です。