我有两个数据库,比如说数据库 A 和 B,具有不同的数据结构。在数据库 A 中有一个表联系人。在数据库 B 中有一个表 Accounts。
我想将数据从数据库 A 表联系人传输到数据库 B 表帐户。我正在使用 SQL Server 2005 并想编写 sql 脚本来执行此操作。
有人可以告诉我实现这一目标的最简单和最有效的方法是什么:
a)如果它们在同一个 SQL 服务器上
b)如果它们在不同的 SQL 服务器上。
我有两个数据库,比如说数据库 A 和 B,具有不同的数据结构。在数据库 A 中有一个表联系人。在数据库 B 中有一个表 Accounts。
我想将数据从数据库 A 表联系人传输到数据库 B 表帐户。我正在使用 SQL Server 2005 并想编写 sql 脚本来执行此操作。
有人可以告诉我实现这一目标的最简单和最有效的方法是什么:
a)如果它们在同一个 SQL 服务器上
b)如果它们在不同的 SQL 服务器上。
最简单的方法不一定是最有效的。正如 Mitch 已经指出的那样,SSIS 可能是最有效的。
最简单的(如果您还不知道 SSIS)是只需将链接服务器设置到远程数据库,然后使用四部分命名来选择数据。您使用 sp_addlinkedserver 和 sp_addlinkedsrvlogin 设置链接服务器(检查 BOL 的语法),并查询如下:
INSERT INTO MyLocalTable (ColumnList)
SELECT <Columns> FROM RemoteServer.RemoteDB.RemoteSchema.RemoteTable
使用 SSIS。它适用于本地和远程情况,并使您能够在表之间设置转换,将列映射到洛瑟列等。
是一次性转让吗?如果它是一个简单的传输,我会写一个 SELECT 语句来创建 INSERT 语句,即
SELECT 'INSERT INTO Accounts (ID, Name) VALUES (' + CAST(ID as VARCHAR) + ', ''' + Name + ''')'
FROM Contacts
在数据库 A 上运行它 - 它会吐出所有 INSERT 语句,您复制并粘贴这些语句,以便您可以在数据库 B 上运行它们。
或者,在同一个数据库上:
INSERT INTO DatabaseA.dbo.Accounts (ID, Name)
SELECT Id, Name
FROM DatabaseB.dbo.Contacts
仍然不开心 - 尝试设置链接服务器: http: //msdn.microsoft.com/en-us/library/aa213778 (SQL.80).aspx