MS SQL Server数据转移问题请教!

setxpse 2015-11-26 08:36:14
目的:把A数据库5月份的数据复制到B数据库。

假设,我有两个数据库,分别是A和B,A有1-5个月的数据,B有1-4个月的数据,我想把A数据库5月份的整月数据复制到B数据库,有办法处理吗?

PS:A和B数据库1-4月的数据是一样的,但是期间我对B数据库数据进行修改,造成数据不一样,如果直接把A数据库的数据导入B数据库,那么我对B数据库写入的数据就会没有,所以直接把A数据库的数据导入B数据库的方法是不可行的。

...全文
111 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Sargeras7527 2015-11-27
[quote=引用 12 楼 yupeigu 的回复:] 我现在拿了一个表做测试,代码如下:
insert into b.dbo.Table1(Date,Date2) select t1.* from a.dbo.Table1 t1
left join b.dbo.Table1 t2
on t1.Date=t2.Date where t2.Date is null
但是如果我存在多个表,可以简化语句吗,比如:
insert into b.dbo.Table1(Date,Date2) select t1.* from a.dbo.Table1 t1
insert into b.dbo.Table3(Date,Date2) select t3.* from a.dbo.Table3 t3
left join b.dbo.Table1 t2
on t1.Date=t2.Date where t2.Date is null
回复
setxpse 2015-11-26
引用 10 楼 u010192842 的回复:
您这样完全不会写也不会改的话,只能把数据库和要导的表名以及表结构都发出来了......我们给您的都是例子,需要您自己按照自己的库表去对应修改的...
希望能帮忙写几个表的例子,我看下例子能自己改的 这是数据库部分表: 名称 所有者 类型 创建日期 WF_Property dbo 用户 2013-12-28 13:55:32 WF_MyDetail dbo 用户 2008-04-24 11:01:50 WF_MyBill dbo 用户 2008-04-24 11:01:50 WF_GenRight dbo 用户 2008-04-24 11:01:50 WF_GenDetail dbo 用户 2008-04-24 11:01:50 WF_GenBill dbo 用户 2008-04-24 11:01:50 WF_Detail dbo 用户 2008-04-24 11:01:50 WF_Delegate dbo 用户 2008-04-24 11:01:50 WF_Define dbo 用户 2008-04-24 11:01:50 WF_DefDetail dbo 用户 2008-04-24 11:01:50 WF_Default dbo 用户 2009-08-12 11:48:48 WF_Bill dbo 用户 2008-04-24 11:01:50 sysusers dbo 系统 1998-11-13 3:00:19 systypes dbo 系统 1998-11-13 3:00:19 sysreferences dbo 系统 1998-11-13 3:00:19 sysprotects dbo 系统 2004-04-12 9:21:28 sysproperties dbo 系统 2004-04-12 9:21:25 syspermissions dbo 系统 1998-11-13 3:00:19 sysobjects dbo 系统 1998-11-13 3:00:19 sysmembers dbo 系统 2004-04-12 9:21:28 sysindexkeys dbo 系统 2004-04-12 9:21:28 sysindexes dbo 系统 1998-11-13 3:00:19 sysfulltextnotify dbo 系统 2004-04-12 9:21:25 sysfulltextcatalogs dbo 系统 1998-11-13 3:00:19 sysforeignkeys dbo 系统 2004-04-12 9:21:28 sysfiles1 dbo 系统 1998-11-13 3:00:19 sysfiles dbo 系统 2004-04-12 9:21:28 sysfilegroups dbo 系统 1998-11-13 3:00:19 sysdepends dbo 系统 1998-11-13 3:00:19 syscomments dbo 系统 1998-11-13 3:00:19 syscolumns dbo 系统 1998-11-13 3:00:19 ST_SiteCtrl dbo 用户 2001-08-31 9:45:59 ST_ShelfBal dbo 用户 2000-08-12 11:13:45 ST_Shelf dbo 用户 2000-08-12 11:13:45 ST_OutDetail dbo 用户 2000-08-12 11:13:44 ST_OutBill dbo 用户 2000-08-12 11:13:44 ST_MoveDetail dbo 用户 2000-08-12 11:13:44 ST_MoveBill dbo 用户 2000-08-12 11:13:44 ST_Manager dbo 用户 2000-08-12 11:13:44
回复
Yole 2015-11-26
您这样完全不会写也不会改的话,只能把数据库和要导的表名以及表结构都发出来了......我们给您的都是例子,需要您自己按照自己的库表去对应修改的...
回复
setxpse 2015-11-26
引用 8 楼 yupeigu 的回复:
[quote=引用 6 楼 setxpse 的回复:]
[quote=引用 5 楼 yupeigu 的回复:]

你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。

如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。

如果只是一个表,直接用sql导入就可以:

Insert B.dbo.tb(col1,col2...)
select col1,col2,... from A.dbo.tb


是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。[/quote]

可以,这样就只能自己写sql来实现了,无非就是这么一个sql,列必须要对应:

insert into b.dbo.tb(col1,col2...)
select (col1,col2...)
from a.dbo.tb t1
left join b.dbo.tb t2
on 判断是否重复的关联条件
where t2.col is null

就是找出所有在A库里有的,但是在B库里没有的数据看,插入到B中[/quote]

版主可以帮忙加个注释吗?

引用 8 楼 yupeigu 的回复:
[quote=引用 6 楼 setxpse 的回复:]
[quote=引用 5 楼 yupeigu 的回复:]

你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。

如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。

如果只是一个表,直接用sql导入就可以:

Insert B.dbo.tb(col1,col2...)
select col1,col2,... from A.dbo.tb


是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。[/quote]

可以,这样就只能自己写sql来实现了,无非就是这么一个sql,列必须要对应:

insert into b.dbo.tb(col1,col2...)
select (col1,col2...)
from a.dbo.tb t1
left join b.dbo.tb t2
on 判断是否重复的关联条件
where t2.col is null

就是找出所有在A库里有的,但是在B库里没有的数据看,插入到B中[/quote]

语句分析报错。
是不是把col1,col2替换成我的字段名,t1,t2指的是表名吗? 新手不是很懂,还望版主别见怪。
麻烦版主帮忙加个注释
回复
引用 6 楼 setxpse 的回复:
[quote=引用 5 楼 yupeigu 的回复:] 你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。[/quote] 可以,这样就只能自己写sql来实现了,无非就是这么一个sql,列必须要对应: insert into b.dbo.tb(col1,col2...) select (col1,col2...) from a.dbo.tb t1 left join b.dbo.tb t2 on 判断是否重复的关联条件 where t2.col is null 就是找出所有在A库里有的,但是在B库里没有的数据看,插入到B中
回复
setxpse 2015-11-26
引用 5 楼 yupeigu 的回复:
你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
A里面有很多表,应该有100多个,要把B数据结构修改成A一样不麻烦,只要把A数据库恢复到B一次就可以了。
回复
setxpse 2015-11-26
引用 5 楼 yupeigu 的回复:
你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。
回复
你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
回复
setxpse 2015-11-26
引用 3 楼 u010192842 的回复:
B表table1中有日期字段么?


没有,只有一个字符类型的字段。
回复
Yole 2015-11-26
B表table1中有日期字段么?
回复
setxpse 2015-11-26
引用 1 楼 u010192842 的回复:
insert into B库.dbo.表
select * from A库.dbo.表 where 日期>='2015-05-01'


试了语句,报错,MS SQL是2000版本的。
回复
Yole 2015-11-26
insert into B库.dbo.表 select * from A库.dbo.表 where 日期>='2015-05-01'
回复
引用 9 楼 setxpse 的回复:
[quote=引用 8 楼 yupeigu 的回复:] [quote=引用 6 楼 setxpse 的回复:] [quote=引用 5 楼 yupeigu 的回复:] 你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。[/quote] 可以,这样就只能自己写sql来实现了,无非就是这么一个sql,列必须要对应: insert into b.dbo.tb(col1,col2...) select (col1,col2...) from a.dbo.tb t1 left join b.dbo.tb t2 on 判断是否重复的关联条件 where t2.col is null 就是找出所有在A库里有的,但是在B库里没有的数据看,插入到B中[/quote] 版主可以帮忙加个注释吗?
引用 8 楼 yupeigu 的回复:
[quote=引用 6 楼 setxpse 的回复:] [quote=引用 5 楼 yupeigu 的回复:] 你是要把数据库A里的数据都导入到B数据库里是吗,还是说只要把A数据库里的某个表的 5月数据导入就可以。 如果是有很多表,建议如果可以的化把B数据库的结构修改为和A一。 如果只是一个表,直接用sql导入就可以: Insert B.dbo.tb(col1,col2...) select col1,col2,... from A.dbo.tb
是要把A数据库里面所有的表,并且是整个月的数据都导入到B,但是又要保证B数据库新增的数据不会被更改,如果一样的内容就可以替换。[/quote] 可以,这样就只能自己写sql来实现了,无非就是这么一个sql,列必须要对应: insert into b.dbo.tb(col1,col2...) select (col1,col2...) from a.dbo.tb t1 left join b.dbo.tb t2 on 判断是否重复的关联条件 where t2.col is null 就是找出所有在A库里有的,但是在B库里没有的数据看,插入到B中[/quote] 语句分析报错。 是不是把col1,col2替换成我的字段名,t1,t2指的是表名吗? 新手不是很懂,还望版主别见怪。 麻烦版主帮忙加个注释 [/quote] 这个语句要修改,不能直接运行,比如col1,col2。。。都要改成你自己的字段名称,另外, 关联条件也要改成你的表里的主键
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-11-26 08:36
社区公告
暂无公告