如何用ADO复制一个表?

rushing 北京算通科技发展股份有限公司 CTO/CIO/技术总监  2004-03-01 04:15:22
将一个数据库中的表复制到另一个数据库中的同样结构的表中。
如果已经有同样的记录,就不复制。
是否有整表复制的方法?
...全文
145 点赞 收藏 20
写回复
20 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LGYAN 2004-08-02
DTS是SQL Server的数据导入导出工具。它可以自动生成VB模块。但是绝对不好用。因为那是整表输入输出的,我可以向你保证你要是去用DTS,绝对会是浪费你的时间。

建议就是使用我的两条SQL语句吧,那样效率应该是最好的。
回复
rushing 2004-07-31
B 表的信息不能删除,因为正在使用中,只能更新。

采用两条SQL语句的思路也很好。

只是不知DTS是什么,请指教。
回复
taoheping 2004-07-31
select DISTINCT * into ...
回复
lxkim 2004-07-31
更新bs已经有的
update tt
set tt.LXBH=t1.LXBH,
tt.LBBH=t1.LBBH,
tt.ffrq=t1.ffrq--必须要加上,不然就会出错
from (select * from T where (DATEDIFF([day], FFRQ, getdate()) = 0)) t1,njgf.book.dbo.T tt
where tt.bs =t1.bs
--插入不存在的
insert into njgf.book.dbo.T
select *
from T
WHERE (DATEDIFF([day], FFRQ, getdate()) = 0)
and T.BS not in
(select BS from njgf.book.dbo.T
where (DATEDIFF([day], FFRQ, getdate()) = 0)
)
你参考一下
用selet * into 肯定不行。
用dts比较方便
回复
ryuginka 2004-07-31
不如这样,
打开表A做循环写入表B中去

也可以考虑用游标
回复
dapha 2004-07-31
看清楼主的意思,是需要只要某一字段的内容发生变化就得更新

以上的方法并行不通.
回复
zhujiechang 2004-07-30
没有直接的办法,自己写判断的语句,sql无法直接实现.
回复
落伍者 2004-07-30
1、如果是在sql server中就用触发器实现
2、如果想用ado实现
如果是完全保持一致 ,在第一次同步时
con.execute "Delete From Table B"
insert into b select * from A
然后从表B中删除所有A表的数据
Delete from B where 主键 in(select 主键 from A)
添加A表的数据到B表中
insert into B select * from A
不知道楼主用过sql server的导入和导出功能没有,系统提供的方法好象也是通过insert语句实现的。
回复
ahyf 2004-07-30
刚研究过DTS,不知道你想不想用
回复
LGYAN 2004-07-30
那么楼主的要求就好办了。

不过要两条语句。

1、从目的表B中删除所有A表的数据
Delete from B where ID in(select ID from A)

2、添加A表的数据到B表中
insert into B(ID,name)
select id,name from A

不就行了吗?
回复
Gutta 2004-07-30
楼主所说的源表(A)和目的表(B)
因为从A表中选择出的记录还要和B表进行比较,
所以显然B表是已经存在的,
那么就不能用SELECT ...INTO... 语句(此语句是用来将选择出来的列而新建一张表)

就从解决问题的方法来说可以用
LGYAN(紫衣随想) 的INSERT INTO语句来实现:
Insert into B
Select * from A where id not in
(Select id from B)

已经通过验证.
回复
rushing 2004-07-30
如果主键相同,其他字段不同,就需要更新其他字段的值。
回复
LGYAN 2004-07-30
那么请问楼主,对于两表中主键相同,而其它字段不相同的记录怎么办?主键是唯一的啊
回复
rushing 2004-07-30
事实上是一个表更新与同步的操作。
不仅主键要相同,每个字段都要相同。
我要保证两个表相应的部份完全一致。
回复
liyanchao 2004-07-30
create table a as (select * from b)
回复
LGYAN 2004-07-30
设有A表(ID,Name),B表(ID,Name).其中ID为主键。
现将B表中不存在A表的数据插入A表
SQL语句如下:
insert into A(ID,name)
select B.id,B.name from B where B.id not in(SELECT B.id
FROM B,A where (B.id=A.id))

本SQL语句要求AB两表中主键相同的记录的其余信息应该相同。

因为楼主所说的同样的记录,如果两表的主键值相同,而其余字段值不同的话,那么无论
你怎么插入肯定是会出错的。
除非你的数据库表没有主键
回复
haohaohappy 2004-07-30
例子:
Dim Conn As New ADODB.Connection
Dim Strconn As String
Strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabasePath & ";Persist Security Info=False"
Conn.CursorLocation = adUseClient
Conn.Open Strconn

Rs.Open "Select * into table from " & TableName, Conn, adOpenStatic, adLockBatchOptimistic
回复
adamcn 2004-07-30
同意selet * into
回复
_1_ 2004-07-30
selet * into

回复
rushing 2004-07-30
是什么样的SQL语句呢?
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7489

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2004-03-01 04:15
社区公告
暂无公告