回 帖 发 新 帖 刷新版面

主题:[讨论]access转到sql server数据库的跨库查询问题

access里有一张表A,在sqlserver里有一张几乎相同的表B。
怎样才能一次性把表A里的多条记录写入到表B里去(insert)。
insert into 表B select * from 表A 只适合在同一个数据库里。

回复列表 (共4个回复)

沙发

http://www.qhwins.com/ShowNews/?18-2008111917292081994.html

用SELECT * INTO newtable FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名 把access里的表导入到sql时,会新建一个表,如果这个表已经存在,则会出错。

改了下,用insert into GROUTING_PROC_RECORD select * from openDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\GROUTING.MDB"')...GROUTING_PROC_RECORD ,但此时select * from openDataSource...建立的临时表中的字段顺序与现有表的顺序不一致(甚至与源access表里的字段顺序也不一致),而是按ascii对字段排序后的顺序,导致在写入时类型不匹配,可能还得自己在selec * from 里把字段一个一个地写全,固定字段的顺序,使和sqlserver里现有表的顺序一致。(我很懒,想到要一个一个地写字段名,就没有试了)

PS:如果谁能够让sqlserver对这种方式产生的临时表(或新表)的字段名不排序,而是与源表的字段顺序一致,请告诉一声,感激不尽。

板凳

如果你要是直接完成数据迁移的话,sqlserver里直接就有这些功能

3 楼

[quote]如果你要是直接完成数据迁移的话,sqlserver里直接就有这些功能[/quote]
主要是给客户用的,而且并不完全是数据迁移,包含了一些数据处理。总不能告诉对方说,你自己直接在sqlserver里怎么怎么操作就行了。

4 楼

产品与自用品有区别。

我来回复

您尚未登录,请登录后再回复。点此登录或注册