服务器a有数据库123,表pp,服务器b有数据库456表mm,如何用sql写将456的表mm插入到123表pp(30分)

  • 主题发起人 主题发起人 dqj
  • 开始时间 开始时间
D

dqj

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器a有数据库123,表pp,服务器b有数据库456表mm,如何用sql写将456的表mm插入到123表pp
a是远程服务器名,123是数据库名,b是本地服务器名
INSERT INTO a.123.pp
提示不知道服务器名a
 
用batchmove
 
如是ORACLE的话建立一个远程数据库连接
 
Query456.Open;
Query456.First;
while not Query456.EOF do
begin
with Table123 do
begin
Append;
FieldByName('empNo').value:=
Query456.FieldByName('empNo').value;
FieldByName('old_fund').value:=
Query456.FieldByName('n1').value;
FieldByName('social_fund').value:=
Query456.FieldByName('n2').value;
FieldByName('mid_fund').value:=
Query456.FieldByName('n3').value;
Post;
end;
if PBhr.Position=200 then PBhr.Position:=0
else PBhr.Position:=PBhr.Position+1;
Query456.Next;
end;
 
如何跨服务器写SQL,我也g
 
arm能说详细一点吗而且如果我想实现update和append的效果应该怎么办呢?
kaven用batchmove怎么做能说具体一点吗?
 
我可能写得不清楚,重写一次.
服务器a有mssql7.0数据库123,表pp,服务器b有数据库456表mm,
如何用sql写将456的表mm插入到123表pp
a是远程服务器名,123是数据库名,b是本地服务器名
insert into a.123.dbo.pp(日期,金额)
(select 日期,金额 from b.456.dbo.mm )

提示: ado错误 server 'a' is not configured for DATA ACCES

在enterprise manager的 remote services中配置了
服务器名a,但没有看到DATA ACCES选项,在linked servers
的有DATA ACCES.由于在remote services中有服务器名a,
故无法在linked servers 添加服务器a.我想删除remote services
中的a,提示:

Error 20583:cannot drop server "a" because it is used as
a subscriber in ceplication.

我已删除了以前配制的复制,为什么还会出现上述提示,是什么意思?

 
远程数据库没配好,(SQLNet)
先把数据源配好再编程吧
用的是NT的还是UNIX的ORACLE
不管哪种都不难
找本书看一下便知
 
在client network utility 中有服务器名a
系统是nt4.0
 

用两个database组件把两个数据库连好啦.在BDE里面建别名也可以.

Query123 连database123
Query456 连database456

with query123 do
begin
close;
sql.clear;
sql.add('insert pp (f1,f2,f3) values(:f1,:f2,:f3)');
end;

with query456 do
begin
close;
sql.clear;
sql.add('select * from mm');
try
open;
first;
except
end;
end;
while not query456.eof do
begin
query123.parambyname('f1').value:=query456.fieldbyname('f1').value;
query123.parambyname('f2').value:=query456.fieldbyname('f2').value;
query123.parambyname('f3').value:=query456.fieldbyname('f3').value;
try
query123.execsql;
except
end;
query456.next;
end;
 
第一种方法:
用 D的 TBatchMove 控件
分别建两个 TDatabase,再用两个 TTable 指向不同的服务器上的数据表,
用一个 TBatchMove 控件,destination 指向 123上的PP,source 指向 456上的 mm,
指定工作模式为 append,然后 execute 一下就可以了。如果字段不同,用其 mapping
属性把双方的字段对应关系填上就可以了。
第二种:
用跨平台的 SQL 语句,这种用法比较讨厌,因为和后台数据库的 SQL 方言有关。这个
问题以前我问过,温柔一刀回答的,做法不是很通用。你可以用“跨数据库”搜索一下。
 
多人接受答案了。
 
后退
顶部