我在同一台服务器上有两个数据库。一个db比另一个db更新,并且已经对其架构进行了相当多的修改。我想将数据从旧数据库中的表传输到新数据库中的表,但我需要完全控制该进程,以便我可以模拟旧数据以适应新模式。
[NewDB].[dbo].[Aliases]
[OldDB].[Terminal].[Alias]
我还不擅长SQL。有没有办法可以遍历旧表中的所有记录,然后在循环的每次迭代中为新表创建一个自定义插入语句?
答案 0 :(得分:3)
尝试INSERT SELECT语句。
INSERT INTO [NewDB].[dbo].[Aliases]
SELECT columns
FROM [OldDB].[Terminal].[Alias]
http://msdn.microsoft.com/en-us/library/ms174335(v=sql.100).aspx - 派生表部分 http://msdn.microsoft.com/en-us/library/ms189499(v=sql.100).aspx
答案 1 :(得分:2)
与两个表位于同一数据库中的方式相同。只需完全限定表的名称。例如:
INSERT INTO [NewDB].[dbo].[Aliases] (col1, col2, col3)
SELECT LEFT(col1,3), col2, col3 FROM [OldDB].[Terminal].[Alias]
答案 2 :(得分:2)
根据您要传输的数据大小,您可能需要考虑使用BULK INSERT
:http://msdn.microsoft.com/en-us/library/ms188365.aspx
答案 3 :(得分:0)
INSERT INTO NEWDB..TABLENAME( *fieldlist* )
SELECT *fieldlist* FROM OLDDB..TABLENAME