基本上我在SQL Server 2005上有两个数据库。
我想从一个数据库中获取表数据并将其复制到另一个数据库的表中。
我试过了:
SELECT * INTO dbo.DB1.TempTable FROM dbo.DB2.TempTable
这不起作用。
我不想使用恢复来避免数据丢失......
有什么想法吗?
答案 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 是布尔值)