- ベストアンサー
別のデータベースのテーブルの統合 No.2
SQL Server 2005 Express で、別のデータベースへのテーブルの移行するにあたり、 INSERT INTO データベースB.dbo.テーブルX SELECT * FROM データベースA.dbo.テーブルX とすればよいというご回答をいただいています。 で、 IDENTITYを設定しているテーブルがあるとちょっと工夫が必要です。 とのコメントをもいただきましたが、 この「工夫」が分かりません。 どんな方法なのでしょうか? IDENTITYをはずす方法や、リレーションシップをはずす方法などが思い浮かぶのですが、テーブル構造が複雑で、わけがわからなくなります。 元のIDの値は維持しなくてもよいので、何かよい方法はありますでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
TABLE1 (ID,F1,F2,F3)でIDにIDENTITYが付いていると仮定しますと、 方法1:番号が変わってもよい INSERT INTO DB2.dbo.TABLE1 (F1,F2,F3) SELECT F1,F2,F3 FROM TABLE1 GO 方法2:番号もそのままもっていく SET IDENTITY_INSERT TABLE1 ON GO INSERT INTO DB2.dbo.TABLE1 (ID,F1,F2,F3) SELECT ID,F1,F2,F3 FROM TABLE1 GO SET IDENTITY_INSERT TABLE1 OFF GO いずれにしてもポイントはSELECT * FROM TABLE1ではだめで、フィールド名を羅列する必要があるということです。 なお、IDENTITY_INSERTは一度に1つのテーブルしかONにできませんので、念のため。
お礼
ID列の番号が変わってもよい ということは、どういうことを意味するのでしょうか? リレーションシップが解けてしまうのでしょうか? データベースとしての機能を外してID番号を外す以外には、 「番号をそのままもっていく」しかないのでしょう、か? で、虫がよすぎるかもしれませんが、 リレーションシップなども考えずに(継承されて)、単純に「二つのデータベースを一つに合体する」という方法は、ないのでしょうか? 面倒がらずにやるしかないのでしょうけれど...。 この辺り、ご指導お願いします。