菜鸟求大神!怎么把数据库中的字段的所有值写到另一个数据库中的字段中?

誮訫小緣帥 2013-01-09 11:49:13
如题;

现在有两个数据库A,B,

需要把A里面的一个表1中的字段1,字段2..中的所有的值写到数据库B中的表A字段A,字段B..

字段名字是不一样的,字段的个数也不一样.所以不能通过导入数据来复制写入,

小弟求大神指点,怎么用C#写个程序批量导入...
...全文
361 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
同一个实例下的话: update b set b.xx=a.xx,b.xxx=a.xxx,.... from A库..a表 a inner join B库..b表 b on a.主键=b.主键
顶一个
發糞塗牆 2013-01-10
  • 打赏
  • 举报
回复
引用 14 楼 huaxinyuanshuai 的回复:
引用 13 楼 DBA_Huangzj 的回复: SQL code?123456789101112--情况1,写入B库的表,但不重复,也就是说b库的表中已经有数据:INSERT INTO b.dbo.表名(列名....)SELECT 列名...--这里的列名要更上面insert 的一一对应FROM a库.dbo.表名 AS a WHERE NOT EXISTS (SELECT 1 FROM b……
你要看清楚我用了not exists,你如果觉得不喜欢,可以换成exists,然后a.主键<>b.主键
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复
引用 13 楼 DBA_Huangzj 的回复:
SQL code?123456789101112--情况1,写入B库的表,但不重复,也就是说b库的表中已经有数据:INSERT INTO b.dbo.表名(列名....)SELECT 列名...--这里的列名要更上面insert 的一一对应FROM a库.dbo.表名 AS a WHERE NOT EXISTS (SELECT 1 FROM b.dbo.表名 AS b ……
a.主键=b.主键,如果 a.主键在b表里面已经有了不是冲突了吗?
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复
引用 22 楼 DBA_Huangzj 的回复:
如果你的主键只是ID的话,那试试: SQL code?12345678INSERT INTO Pro_TOne.dbo.Rs_Userinfo([userid],[username],[useraddrs],[areaid],[areaname]) select [userusid],[UserName],[UserAddress],[Areaid],[AreaName……
搞定!多谢指点!
發糞塗牆 2013-01-10
  • 打赏
  • 举报
回复
如果你的主键只是ID的话,那试试:

INSERT INTO Pro_TOne.dbo.Rs_Userinfo([userid],[username],
[useraddrs],[areaid],[areaname]) 
select [userusid],[UserName],[UserAddress],[Areaid],
[AreaName] from WMIS.dbo.Rs_Userinfo AS WMIS WHERE 
NOT EXISTS(Select 1 from
Pro_TOne.dbo.Rs_Userinfo AS 
Pro_TOne where WMIS.username=Pro_TOne.username and WMIS.useraddrs=useraddrs
and  WMIS.areaid=areaid and  WMIS.areaname=areaname)
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复
引用 18 楼 DBA_Huangzj 的回复:
一样是啥意思?主键如果不是自增的那些ID的话,理论上不会一样。你举1、2挑数据来看看。另外exists只判断true还是false,所以不需要select * ,你可以select 1也可以select 2、3、4、5.....总之能保证返回true就可以了。
看不到图可以到这个论坛相册里面看,有两张数据库表格的就是,
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复
引用 18 楼 DBA_Huangzj 的回复:
一样是啥意思?主键如果不是自增的那些ID的话,理论上不会一样。你举1、2挑数据来看看。另外exists只判断true还是false,所以不需要select * ,你可以select 1也可以select 2、3、4、5.....总之能保证返回true就可以了。



因为删除过一次,所以从100以后35392开始了..
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复

INSERT INTO Pro_TOne.dbo.Rs_Userinfo([userid],[username],
[useraddrs],[areaid],[areaname]) 
select [userusid],[UserName],[UserAddress],[Areaid],
[AreaName] from WMIS.dbo.Rs_Userinfo AS WMIS WHERE 
NOT EXISTS(Select 1 from
Pro_TOne.dbo.Rs_Userinfo AS 
Pro_TOne where WMIS.UserusID=Pro_TOne.id)
上面语句不方便看....再发一个
發糞塗牆 2013-01-10
  • 打赏
  • 举报
回复
一样是啥意思?主键如果不是自增的那些ID的话,理论上不会一样。你举1、2挑数据来看看。另外exists只判断true还是false,所以不需要select * ,你可以select 1也可以select 2、3、4、5.....总之能保证返回true就可以了。
誮訫小緣帥 2013-01-10
  • 打赏
  • 举报
回复
引用 15 楼 DBA_Huangzj 的回复:
引用 14 楼 huaxinyuanshuai 的回复:引用 13 楼 DBA_Huangzj 的回复: SQL code?123456789101112--情况1,写入B库的表,但不重复,也就是说b库的表中已经有数据:INSERT INTO b.dbo.表名(列名....)SELECT 列名...--这里的列名要更上面insert 的一一对应FROM a库.dbo.表……

INSERT INTO Pro_TOne.dbo.Rs_Userinfo([userid],[username],[useraddrs],[areaid],[areaname]) select [userusid],
[UserName],[UserAddress],[Areaid],[AreaName] from WMIS.dbo.Rs_Userinfo AS WMIS WHERE NOT EXISTS(Select 1 from
Pro_TOne.dbo.Rs_Userinfo AS Pro_TOne where WMIS.UserusID=Pro_TOne.id)
果然是这样,上面是我的语句,可是,还有一个问题.比如:我已经从WMIS表中写入了前100条,执行这语句的时候,前100条从第101到200是一样的,也就是说没有覆盖掉,有没有方法可以让重复的数据合并或是覆盖呢? 另外,NOT EXISTS(Select 1..)这个1是不是就是从第一行开始的意思?
饮水需思源 2013-01-09
  • 打赏
  • 举报
回复
INSERT INTO B(字段1,字段2) SELECT 字段1,字段2 FROM A
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
同一个实例下的话: update b set b.xx=a.xx,b.xxx=a.xxx,.... from A库..a表 a inner join B库..b表 b on a.主键=b.主键
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
--情况1,写入B库的表,但不重复,也就是说b库的表中已经有数据:
INSERT INTO b.dbo.表名(列名....)
SELECT 列名...--这里的列名要更上面insert 的一一对应
FROM a库.dbo.表名  AS a 
WHERE NOT EXISTS (SELECT 1 FROM b.dbo.表名 AS b WHERE a.主键=b.主键)

--情况2,B库的表没有数据,可以直接插入:
INSERT INTO b.dbo.表名(列名....)
SELECT 列名...--这里的列名要更上面insert 的一一对应
FROM a库.dbo.表名 

--这里最主要的问题就是你select的那些列要和insert时的列一一对应
誮訫小緣帥 2013-01-09
  • 打赏
  • 举报
回复
引用 11 楼 DBA_Huangzj 的回复:
b.xx=a.xx是字段。inner join是表关联,其实想让你知道的是跨数据库访问,需要是[库名].[架构名].[表名]这样的格式才行
那写入的话用你的是不是就是这样: insert 数据库B set 表B.xx字段=表A.xx字段 from 数据库A 表A a.xx字段 inner join 数据库B 表B b.xx字段 on 表A.主键=表B.主键? 和下面这个有什么区别,我是用下面这个解决的,但是我想多了解下.版主大神不要介意哈 INSERT into Pro_TOne.dbo.Rs_Userinfo([username],[useraddrs],[areaid],[areaname],[userid]) select [UserName],[UserAddress],[AreaID],[AreaName],[userusid] from WMIS.dbo.Rs_Userinfo
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
b.xx=a.xx是字段。inner join是表关联,其实想让你知道的是跨数据库访问,需要是[库名].[架构名].[表名]这样的格式才行
誮訫小緣帥 2013-01-09
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
看错了,那你换insert咯,先把我那个update的改成select 就可以拉
呵呵.. update b set b.xx=a.xx,b.xxx=a.xxx,.... from A库..a表 a inner join B库..b表 b on a.主键=b.主键 b.xx=a.xx,是不是就是数据库A.表名=数据库B.表名? 还是表B.xx字段=表A.xx字段? inner 是干什么用的?
FelixOu 2013-01-09
  • 打赏
  • 举报
回复
insert into TA(A,B,C)
select 1,2,3
From TB
發糞塗牆 2013-01-09
  • 打赏
  • 举报
回复
看错了,那你换insert咯,先把我那个update的改成select 就可以拉
誮訫小緣帥 2013-01-09
  • 打赏
  • 举报
回复
引用 2 楼 Leftie 的回复:
SQL code?1INSERT INTO B(字段1,字段2) SELECT 字段1,字段2 FROM A
多谢!貌似不全哦,我用的4楼的方法.. 完整代码:

INSERT into Pro_TOne.dbo.Rs_Userinfo([username],[useraddrs],[areaid],[areaname],[userid]) select top 100 [UserName],[UserAddress],[AreaID],[AreaName],[userusid] from WMIS.dbo.Rs_Userinfo
誮訫小緣帥 2013-01-09
  • 打赏
  • 举报
回复
引用 4 楼 szm341 的回复:
同一服务器的用 insert into B.dbo.table(col1,col2) select col1,col2 from A.dbo.table 不同的用 insert into B.dbo.table(col1,col2) select col1,col2 from OPENROWSET('SQLOLEDB','IP';'sql登录名';'密码',……
是同一服务器,成功了,多谢大神指点! 不同的没有试过,记下先..
加载更多回复(3)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧