怎样把一个数据库中的数据移到另一个数据库中

时间:2022-12-11 17:44:36
我想把一个数据库中的每个表的记录加点数据后(比如当前时间,每条记录都一样)插入另一个数据的表中,请问有什么比较方便的方法吗

31 个解决方案

#1


zjcxc(邹建) 大侠帮忙啊

#2


insert 另一表 select 字段+点什么 from 一个表

#3


--如果跨库:

insert 另一库..另一表 select 字段+点什么 from 一个库..一个表

#4


这两个库不在同一台机器上,必须要用链接服务器吗

#5


--不在同一台电脑上,那可以用下面两种方法:

--如果经常访问或数据量大,建议用链接服务器

--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

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

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

go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'

#6



--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)


--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)

#7


我执行了以下代码:

exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'

select * from srv_lnk.数据库名.dbo.表名

但报错:
在 sysservers 中未能找到服务器 'srv_lnk'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。

#8


--对应的参数改了吗?

exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

select * from srv_lnk.数据库名.dbo.表名

#9


改了,srv_lnk这个名字是不是随便取的啊

#10


我把srv_lnk改成自己的机器名可以通过,但运行时报错,说那个名字服务器以存在

#11


srv_lnk就是你的链接服务器名,查询的时候与创建的时候要一致,还有,你要加上那个go

#12


srv_lnk我能否用变量,即动态的。

#13


添加链接服务器的时候可以,具体查询的时候不能.

#14


链接服务器名我能不能随便取个名字,一定要跟它实际名字一样吗

#15


可以随便取啊.

#16


我的代码是这样的:

exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.66'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.dbname.dbo.table1    

exec sp_dropserver 'test','droplogins'

这样就是报错

#17


非常感谢邹建大侠,这么晚了还为我解答问题,非常感谢

#18


--我的电脑上测试通过(不过很奇怪,我第一次用你的代码也不行,后来用我的代码做一次,再用你的又行了):

exec sp_addlinkedserver  'test','','SQLOLEDB','ymn'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

#19


我再试试看,昨天到3点,哎

#20



邹建大侠,这是我完整的存储过程,麻烦您帮我看看,错在哪里:

CREATE        Procedure UpLoadData
as


--创建链接服务器
exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.30'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''go
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

GO
我在查询分析器中执行就报这个错误:

服务器: 消息 7202,级别 11,状态 2,行 2
在 sysservers 中未能找到服务器 'test'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。
服务器: 消息 15015,级别 16,状态 1,过程 sp_dropserver,行 28
服务器 'test' 不存在。请用 sp_helpserver 来显示可用的服务器。

#21


--存储过程中不能用go

CREATE        Procedure UpLoadData
as
--创建链接服务器
exec('exec sp_addlinkedserver  ''test'','''',''SQLOLEDB'',''192.168.0.30''')
exec('exec sp_addlinkedsrvlogin ''test'',''false'',null,''sa'',''''')

select * from test.pubs.dbo.syscolumns

exec('exec sp_dropserver ''test'',''droplogins''')
GO

#22


呜呜,我还是不行,报错:

服务器: 消息 7202,级别 11,状态 2,过程 UpLoadData,行 30
在 sysservers 中未能找到服务器 'test'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。

是不是sql server需要设置的,邹建大侠,不好意思,麻烦您这么久了,真是非常感谢。

#23


不需要做任何设置啊,真是怪了.

你试试改链接服务器名

#24


你那边可以运行吗,运行结果应该是返回一个结果集是吧
我也觉得很怪,邹建大侠您有qq等联系方式吗,
还有我这个存储过程不是写在master数据库中,这个应该没关系吧
我用sp_addlinkedserver  创建了一个链接服务器,哪里可以知道我有没有创建成功,我怀疑是我没有创建成功的缘故。

#25


在企业管理器--安全性--链接服务器可以看到.

#26


有一点怪的就是,我用你的代码,第一次不成功.

然后我改用我的代码,成功.再改用你的代码,也成功.

#27


我不用存储过程,直接在查询分析器中执行以下语句可以的,这个怪了,难道不让用存储过程吗

exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.66'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

#28


非常感谢邹建大侠,但问题还是不行。

#29


那我不用存储过程的话怎么来调这个语句呢,因为这里不是只有一句语句

#30


--下面是成功的测试:

--存储过程
create proc p_test
as
exec('exec sp_addlinkedserver  ''test'','''',''SQLOLEDB'',''ymn''')
exec('exec sp_addlinkedsrvlogin ''test'',''false'',null,''sa'',''''')

exec('select * from test.pubs.dbo.syscolumns')

exec('exec sp_dropserver ''test'',''droplogins''')
go

--调用
exec p_test
go

--删除测试
drop proc p_test

#31


我现在要晚上12点整,把一个数据库中的数据全部读取到另外一个数据库中,要怎么做啊?大侠帮帮忙吧。

#1


zjcxc(邹建) 大侠帮忙啊

#2


insert 另一表 select 字段+点什么 from 一个表

#3


--如果跨库:

insert 另一库..另一表 select 字段+点什么 from 一个库..一个表

#4


这两个库不在同一台机器上,必须要用链接服务器吗

#5


--不在同一台电脑上,那可以用下面两种方法:

--如果经常访问或数据量大,建议用链接服务器

--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

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

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

go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'

#6



--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)


--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)

#7


我执行了以下代码:

exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'

select * from srv_lnk.数据库名.dbo.表名

但报错:
在 sysservers 中未能找到服务器 'srv_lnk'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。

#8


--对应的参数改了吗?

exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

select * from srv_lnk.数据库名.dbo.表名

#9


改了,srv_lnk这个名字是不是随便取的啊

#10


我把srv_lnk改成自己的机器名可以通过,但运行时报错,说那个名字服务器以存在

#11


srv_lnk就是你的链接服务器名,查询的时候与创建的时候要一致,还有,你要加上那个go

#12


srv_lnk我能否用变量,即动态的。

#13


添加链接服务器的时候可以,具体查询的时候不能.

#14


链接服务器名我能不能随便取个名字,一定要跟它实际名字一样吗

#15


可以随便取啊.

#16


我的代码是这样的:

exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.66'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.dbname.dbo.table1    

exec sp_dropserver 'test','droplogins'

这样就是报错

#17


非常感谢邹建大侠,这么晚了还为我解答问题,非常感谢

#18


--我的电脑上测试通过(不过很奇怪,我第一次用你的代码也不行,后来用我的代码做一次,再用你的又行了):

exec sp_addlinkedserver  'test','','SQLOLEDB','ymn'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

#19


我再试试看,昨天到3点,哎

#20



邹建大侠,这是我完整的存储过程,麻烦您帮我看看,错在哪里:

CREATE        Procedure UpLoadData
as


--创建链接服务器
exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.30'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''go
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

GO
我在查询分析器中执行就报这个错误:

服务器: 消息 7202,级别 11,状态 2,行 2
在 sysservers 中未能找到服务器 'test'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。
服务器: 消息 15015,级别 16,状态 1,过程 sp_dropserver,行 28
服务器 'test' 不存在。请用 sp_helpserver 来显示可用的服务器。

#21


--存储过程中不能用go

CREATE        Procedure UpLoadData
as
--创建链接服务器
exec('exec sp_addlinkedserver  ''test'','''',''SQLOLEDB'',''192.168.0.30''')
exec('exec sp_addlinkedsrvlogin ''test'',''false'',null,''sa'',''''')

select * from test.pubs.dbo.syscolumns

exec('exec sp_dropserver ''test'',''droplogins''')
GO

#22


呜呜,我还是不行,报错:

服务器: 消息 7202,级别 11,状态 2,过程 UpLoadData,行 30
在 sysservers 中未能找到服务器 'test'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。

是不是sql server需要设置的,邹建大侠,不好意思,麻烦您这么久了,真是非常感谢。

#23


不需要做任何设置啊,真是怪了.

你试试改链接服务器名

#24


你那边可以运行吗,运行结果应该是返回一个结果集是吧
我也觉得很怪,邹建大侠您有qq等联系方式吗,
还有我这个存储过程不是写在master数据库中,这个应该没关系吧
我用sp_addlinkedserver  创建了一个链接服务器,哪里可以知道我有没有创建成功,我怀疑是我没有创建成功的缘故。

#25


在企业管理器--安全性--链接服务器可以看到.

#26


有一点怪的就是,我用你的代码,第一次不成功.

然后我改用我的代码,成功.再改用你的代码,也成功.

#27


我不用存储过程,直接在查询分析器中执行以下语句可以的,这个怪了,难道不让用存储过程吗

exec sp_addlinkedserver  'test','','SQLOLEDB','192.168.0.66'
exec sp_addlinkedsrvlogin 'test','false',null,'sa',''
go

select * from test.pubs.dbo.syscolumns
go 

exec sp_dropserver 'test','droplogins'

#28


非常感谢邹建大侠,但问题还是不行。

#29


那我不用存储过程的话怎么来调这个语句呢,因为这里不是只有一句语句

#30


--下面是成功的测试:

--存储过程
create proc p_test
as
exec('exec sp_addlinkedserver  ''test'','''',''SQLOLEDB'',''ymn''')
exec('exec sp_addlinkedsrvlogin ''test'',''false'',null,''sa'',''''')

exec('select * from test.pubs.dbo.syscolumns')

exec('exec sp_dropserver ''test'',''droplogins''')
go

--调用
exec p_test
go

--删除测试
drop proc p_test

#31


我现在要晚上12点整,把一个数据库中的数据全部读取到另外一个数据库中,要怎么做啊?大侠帮帮忙吧。