2009-06-02 24 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 
相关问题