教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 数据库类教程 · MSSQL教程 · MsSql综合技巧

数据库导入地疑难疑难,请各位老大帮忙,先谢了!

 
学院最新推荐文章
PS教程推荐
 
『数据库导入地疑难疑难,请各位老大帮忙,先谢了!』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
作者:cometome 来源:C.S.D.N 点击数: 更新时间:2008-7-23 
在服务器1上有数据库A,里面的表a结构如下:
fld1 int
fld2 varchar
fld3 varchar

在服务器2上有数据库B,里面的表b结构如下:
fld1 int
fld2 varchar
fld3 varchar
fld4 int

表c结构如下:
fld1 int
fld2 varchar
fld3 varchar
fld4 int

表b和表c通过fld1关联

现在想通过SQL语句将表b的fld1,fld2,表c的fld2导入表a中,应该怎样写这个语句呢?先谢谢各位老大了。


这个问题第1个回答:
表c也是在服务器2里面的,数据库用的是MS-SQL
这个问题第2个回答:
不同服务器数据库之间的数据操作

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

--查询示例
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
--把本地表导入远程表


这个问题第3个回答:
建一个linked server
写SQL,
问题是你描述的不清楚,

假如A里面的一个fld1同时在b表,C表里面都存在,怎么办?
这个问题第4个回答:
引用 3 楼 hyrongg 的回复:
建一个linked server
写SQL,
问题是你描述的不清楚,

假如A里面的一个fld1同时在b表,C表里面都存在,怎么办?



我看错了,sorry
这个问题第5个回答:
楼上两位老大,能否就我的问题写个具体的SQL语句?只是插入数据就行了,谢谢了
这个问题第6个回答:
INSERT INTO a  from (select b.fld1,b.fld2 from b bb inner join c cc on bb.fld1=cc.fld1)
试试看行不
要么你可以用
        SqlBulkCopy DesBulkOp;
        DesBulkOp = new SqlBulkCopy(DesConString,
        SqlBulkCopyOptions.UseInternalTransaction);
        DesBulkOp.BulkCopyTimeout = 500000000;
            DesBulkOp.DestinationTableName = sTableName;
            DesBulkOp.WriteToServer(dt);
dt是你读出来的b和c的要插入的table
sTableName是a表


这个问题第7个回答:
楼上写的可以用吗?我现在是两台服务器的数据库阿。
这个问题第8个回答:
没有人能给个答案吗?各位老大!
这个问题第9个回答:
我k,还没人回答:

我有两个server
server1:
192.168.4.230
dbname: new1209
创建a:
CREATE TABLE A(fld1 INT,fld2 VARCHAR(20),fld3 VARCHAR(20));
insert into a values(1,'a','d');
insert into a values(2,'b','e');
insert into a values(3,'c','f');

server2
192.168.4.150
dbname: db0903
创建b,c
CREATE TABLE B(fld1 int,fld2 VARCHAR(20),fld3 VARCHAR(20),fld4 int);
CREATE TABLE c(fld1 int,fld2 VARCHAR(20),fld3 VARCHAR(20),fld4 int);

insert into b values(1,'a1','d1',8);
insert into b values(2,'b1','e1',8);
insert into b values(3,'c1','f1',8);

insert into c values(1,'a2','d2',8);
insert into c values(2,'b2','e2',8);
insert into c values(3,'c2','f2',8);

select b.fld1,b.fld2,c.fld3 from b
left join c on b.fld1=c.fld1
----------------
1 a1 d2
2 b1 e2
3 c1 f2

ok,在150上先创建linkserver

exec sp_addlinkedserver '192.168.4.230','SQL Server';

接着在150上运行

insert into [192.168.4.230].[new1209].[dbo].a(fld1,fld2,fld3)
select b.fld1,b.fld2,c.fld3 from b
left join c on b.fld1=c.fld1

就是你要的结果吧



这个问题第10个回答:
学习
这个问题第11个回答:
先谢谢Hyrongg了,我最后是要在C#将其实现的,周一试一下,成功马上给分!
这个问题第12个回答:
楼上各位老大,好像不行啊,我执行如下语句:

exec sp_addlinkedserver  'ITSV', '', 'SQLOLEDB', 

[1] [2] 下一页  

】【关闭窗口
·上页:
·下页:
相关文章
 
     数据库类教程 - MsSql综合技巧
普通教程SQL Server 2008升级顾问
普通教程迁移 Reporting Services
普通教程SQL Server 2008升级报表服务器
普通教程SQL Server 2008 升级Reporting
普通教程SQL Server 2008示例之奥地利广
普通教程SQL Server 2008 示例之微软IT部
普通教程SQL Server 2008示例之日立咨询
普通教程SQL Server2008示例之CyberSavv
普通教程SQL Server 2008示例之CareGrou
普通教程微软商业智能技术详细解说
普通教程通过数据说明和生成报表整合企业
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光