将数据从一个数据库中的表复制到另一个单独的数据库

时间:2009-06-02 17:45:44

标签: sql sql-server

基本上我在SQL Server 2005上有两个数据库。

我想从一个数据库中获取表数据并将其复制到另一个数据库的表中。

我试过了:

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

这不起作用。

我不想使用恢复来避免数据丢失......

有什么想法吗?

11 个答案:

答案 0 :(得分:60)

SELECT ... INTO创建一个新表。你需要使用INSERT。此外,您还反转了数据库和所有者名称。

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

答案 1 :(得分:13)

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

试试这个。

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

答案 2 :(得分:8)

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

四部分命名方案如下:

ServerName.DatabaseName.Schema.Object

答案 3 :(得分:5)

很难说不知道你的意思是“它没用”。有很多事情可能会出错,我们在排除其中一条路径时给出的任何建议可能会让您越来越远地找到解决方案,这可能非常简单。

这是我想要的东西,

如果该表包含标识字段并且您手动提供,则必须在要导入的表上启用标识插入。 Identity Insert也只能在数据库中一次启用1个表,因此您必须记住为表启用它,然后在导入后立即禁用它。

另外,请尝试列出所有字段

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

答案 4 :(得分:3)

不要忘记将SET IDENTITY_INSERT MobileApplication1 ON插入顶部,否则您将收到错误消息。这适用于 SQL Server

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

答案 5 :(得分:2)

我们可以将三部分命名为 database_name..object_name

以下查询将在我们的数据库中创建表(没有约束)

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

或者你可以:

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

如果目标表存在且为空。

答案 6 :(得分: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

答案 7 :(得分:1)

我更喜欢这个。

INSERT INTO 'DB_NAME' 
(SELECT * from 'DB_NAME@DB_LINK')
MINUS 
(SELECT * FROM 'DB_NAME');

哪种方式会插入DB_NAME中未包含但DB_NAME@DB_LINK中包含的内容。希望这有帮助。

答案 8 :(得分:0)

试试这个

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

只有当dbo.DB2.TempTable中的项目已经在dbo.DB1.TempTable中时,才会失败。

答案 9 :(得分:0)

这很有效。

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

答案 10 :(得分:0)

即使有一些额外的列,您也可以将一个表复制到另一个数据库表。

insert into [SchoolDb1].[dbo].Student(Col1, Col2,Col3, CreationTime, IsDeleted) 
select Col1, Col2,Col3,,getdate(),0 from [SchoolDb2].[dbo].Student

这些是附加列:(CreationTime 是数据时间,IsDeleted 是布尔值)