SQL数据库,如何把服务器中的一张表插入到另外一个服务器的一张表中?SQL语句该如何写?如下:

服务器1(user:sa1,password:123)、数据库1、表1 和 服务器2(user:sa2,password:456)、数据库2、表2,现需要将表1插入到表2中,使用SQL语句如何实现?

参考资料:select * into 表 from
('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)

以及openrowset()和openquery()到底有什么区别?

第1个回答  推荐于2017-11-25
在服务器2 数据库2的查询分析器里执行
insert into 新表名
select *
from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1追问

那我还想请问您:openrowset()和openquery()以及和你刚刚写的OPENDATASOURCE(),三者到底怎么去理解?

追答

OPENDATASOURCE
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。
OPENQUERY
在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用 OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。

OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。

追问

牛!谢谢您

追答

简单点理解:
opendatasource,openrowset 这两种查询方式 不需要链接服务器 它们是一次性的查询 用于偶尔的分布式查询

OPENQUERY 对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名。OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的目标表进行引用。

追问

也就是说:opendatasource,openrowset 不属于定向的。OPENQUERY 属于定向连接的

追答

opendatasource,openrowset 相当於一次性筷子,方便快捷,但次数一次,OPENQUERY 相当於正常筷子,你用完还可以用,大概这个意思

本回答被提问者采纳
第2个回答  2012-06-07
select * into #A from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1
insert into 表2
select * from #a追问

那我还想请问您:openrowset()和openquery()以及和你刚刚写的OPENDATASOURCE(),三者到底怎么去理解?

追答

我只是用过OPENDATASOURCE
这也是我在网上看到的 你可以看看下面的案例,也许对你有帮助

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表

追问

谢谢您,不过#A和#a,在你的语句中是什么意思?

追答

其实是一个表
我的资料库是sqlserver2000 的跨伺服器存资料要放到一张临时表裏面
你可以直接
insert into 表2
select * from OPENDATASOURCE('SQLOLEDB','Data Source=服务器1;User ID=sa1;Password=123) .数据库1.dbo.表1

追问

非常感谢

sql如何将一 个数据库里的某一个表导入另一个数据库同名的表里
如果是在同一个服务器上,可以直接用SQL语句执行,大概写法如下:insert into B.dbo.dept ( col1,col2,... )select col1,col2,...from A.dbo.dept

...个服务器一个表中把数据插入到另一个服务器中的一个表内
SQL实例--->安全性--->链接服务器--->右键新建链接服务器常规中输入链接服务器的名字,选其它数据源,选SQLOLEDB,数据源写上,一般写IP地址再选安全性---》选本地登陆---》模拟打勾用此安全上下文进行,输入用户与密码。常见问题:1.在建立完链接服务器后,我们进行查询操作例:我们已对DFLD的...

如何使用SQL语句把一个表的数据复制到另外一个表里面
1、打开SQL,登录到一个数据库中,依次点击“工具”——“导出表”,在弹出的界面中选择一个用户,列出这个用户下面的所有表。2、在列出的表中选择其中一个,然后选择下面的“SQL插入”选项卡,在“输出文件”选择框中选择一个路径并填写文件名,然后点击“导出”按钮,则可导出一个关于该表结构和记录...

SQL数据库,如何把一张表从一个数据库中插入到另外一个数据库?如何写语...
情况一:data2表中无table2表 select * into data2.dbo.table2in data2 from data1.dbo.table1 情况二:结构不一样或者你要指定字段 insert into data2.table2(字段1,字段2,字段) select 字段j,字段k,字段m fromdata1.table1 情况三:结构一样 insert into data2.table2select * from data1.table1 -f...

sql中我想要把一个表的数据导入到另一个表该怎么办
SQL企业管理器中,选中数据库,单击鼠标右键->所有任务->导入数据 下一步->选择源数据库,如果不是本机就要在服务器上输入主机名或IP,同时选择数据库->下一步->写SQL语句->立即执行.SQL语句:insert into table2(列1,列2,列3)(select top 2000 列1,列2,列3 from table1)...

SQL SERVER中,如何把一个表中的数据导入到另一个表中?(不同数据库之间...
1:选择目标数据库——鼠标右键——任务——导入数据。2:配置数据库来源 3:配置完成后选择下一步,设置目标数据库。4:目标传输方式最好是选择,Microsoft OLE DB Provider for SQL Server方式,然后设置目标数据库服务器地址,使用SQL Server 身份验证,设置好账号密码后选择目标数据库,点击下一步。5...

SQL中复制一个表到另外一个数据库中(sql复制一个表数据到另一个表)
1。表结构相同的表,且在同一数据库(如,table1,table2)Sql:insertintotable1select*fromtable2(完全复制)insertintotable1selectdistinct*fromtable2(不复制重复纪录)insertintotable1selecttop5*fromtable2(前五条纪录)2。不在同一数据库中(如,db1table1,db2table2)sql:insertintodb1..table1...

SQL server 数据库 如何把一张表复制到另一个数据库表中
SQLserver数据库如何把一张表复制到另一个数据库表中的方法。如下参考:1.首先,在桌面上单击“ManagementStudio”图标。2. 然后,在绑定布局中,右键单击表test2中的“编辑前200行”选项。的权利 3.然后,在这个接口中,选择表test2的所有内容,并右键单击“copy”选项。4.然后,在该接口中右键单击表...

用sql如何把一个表的数据更新到另一个表上?
1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入\/导出向导,按 下一步 ;2、选择数据源 Microsoft Excel 97-2000,文件名 选择要导入的xls文件,按 下一步;3、选择目的 用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库...

请问:如何将一个sql数据库中的数据插入到另一个sql数据库中?
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server 2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标,新建数据库的名字自行取 3、点击新建好的数据库名称(如论SupeSite)-->然后点上面菜单中的工具-->选择恢复数据库 4、在弹出来的窗口中的还原选项中选择从...

相似回答