主题:[讨论]access转到sql server数据库的跨库查询问题
天天学习
[专家分:4570] 发布于 2009-09-17 10:20:00
access里有一张表A,在sqlserver里有一张几乎相同的表B。
怎样才能一次性把表A里的多条记录写入到表B里去(insert)。
insert into 表B select * from 表A 只适合在同一个数据库里。
回复列表 (共4个回复)
沙发
天天学习 [专家分:4570] 发布于 2009-09-17 11:00:00
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对这种方式产生的临时表(或新表)的字段名不排序,而是与源表的字段顺序一致,请告诉一声,感激不尽。
板凳
linxuanxu [专家分:9360] 发布于 2009-09-17 13:22:00
如果你要是直接完成数据迁移的话,sqlserver里直接就有这些功能
3 楼
天天学习 [专家分:4570] 发布于 2009-09-17 14:46:00
[quote]如果你要是直接完成数据迁移的话,sqlserver里直接就有这些功能[/quote]
主要是给客户用的,而且并不完全是数据迁移,包含了一些数据处理。总不能告诉对方说,你自己直接在sqlserver里怎么怎么操作就行了。
4 楼
artless [专家分:1490] 发布于 2009-09-17 14:52:00
产品与自用品有区别。
我来回复