2009-06-02 75 views
27

基本上我有SQL Server的兩個數據庫2005複製數據從一個數據庫表到另一個單獨的數據庫

我想從一個數據庫取表中的數據並將其複製到另一個數據庫的表中。

我嘗試這樣做:

SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable 

這沒有奏效。

我不想使用恢復來避免數據丟失...

任何想法?

回答

44

SELECT ... INTO創建一個新表。你需要使用INSERT。另外,您將數據庫和所有者名稱顛倒過來。

INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 
+0

我以爲我有它,但我得到了這個錯誤。任何解決方法? 僅當使用列列表且IDENTITY_INSERT爲ON時,才能指定表'DB1.dbo.TempTable '中標識列的顯式值。 – Gabe 2009-06-02 18:15:35

8

它db1.dbo.TempTable和db2.dbo.TempTable

四部分命名方案有云:

ServerName.DatabaseName.Schema.Object

0

試試這個

INSERT INTO dbo.DB1.TempTable 
    (COLUMNS) 
    SELECT COLUMNS_IN_SAME_ORDER FROM dbo.DB2.TempTable 

如果dbo.DB2.TempTable中的某個項目已位於dbo.DB1.TempTable中,則只會失敗。

9

SELECT * INTO要求目標表不存在。

試試這個。

INSERT INTO db1.dbo.TempTable 
(List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
5

很難說,不知道你的意思是「它沒有用」。有很多事情可能會出錯,並且我們在排除其中一條路徑時給出的任何建議可能會導致您進一步尋找解決方案,這可能非常簡單。

這裏有一個東西,我會找雖然

標識插入必須對您要導入到,如果該表包含標識字段的表,你手動提供它。一次只能爲數據庫中的一個表啓用標識插入,因此您必須記住爲表啓用它,然後在完成導入後立即將其禁用。

另外,儘量列出你所有的領域

INSERT INTO db1.user.MyTable (Col1, Col2, Col3) 
SELECT Col1, COl2, Col3 FROM db2.user.MyTable 
2

我們可以三部分組成的命名一樣database_name..object_name

下面的語句將創建表到我們的數據庫(帶出來的約束)

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

另外,您可以:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable 

如果您的目的地表存在且爲空。

1
INSERT INTO DB1.dbo.TempTable 
SELECT * FROM DB2.dbo.TempTable 

如果我們使用這個查詢將返回Primary key error ....所以最好選擇哪些列需要移動,像

INSERT INTO db1.dbo.TempTable // (List of columns here) 
SELECT (Same list of columns here) 
FROM db2.dbo.TempTable 
1

不要忘記插入SET IDENTITY_INSERT MobileApplication1 ON頂端,否則你會得到一個錯誤。這是SQL服務器

SET IDENTITY_INSERT MOB.MobileApplication1 ON 
INSERT INTO [SERVER1].DB.MOB.MobileApplication1 m 
     (m.MobileApplicationDetailId, 
     m.MobilePlatformId) 
SELECT ma.MobileApplicationId, 
     ma.MobilePlatformId 
FROM [SERVER2].DB.MOB.MobileApplication2 ma 
1

林喜歡這一個。

INSERT INTO 'DB_NAME' 
(SELECT * from '[email protected]_LINK') 
MINUS 
(SELECT * FROM 'DB_NAME'); 

這意味着將插入任何未列入上DB_NAME但包括在[email protected]_LINK。希望這個幫助。

0

這工作成功。

INSERT INTO DestinationDB.dbo.DestinationTable (col1,col1) 
SELECT Src-col1,Src-col2 FROM SourceDB.dbo.SourceTable 
相關問題