你觉得这样如何:首先,你创建一个access数据库,然后在里面通过ODBC倒入你要操作的oracle表链接。 接下来从这个表里面取出记录集,再写到mdb数据库里。也就是说: 1。用mdb通过odbc链接一个oracle表 2。建立一个字段和oracle表相同的本地mdb数据表 3。用insert into 本地表 select * from 链接表 where 条件完成另外,ACCESS的数据库好像是有条数限制的,或者说当access数据库大到一定程度,比如100MB,操作起来会很慢的。
按你的要求,用程序做,只有一条一条写MDB。
我认为应该使用DAO连接Access数据库(jet方式,假如是本地的), 假如SQL查询结果为rsSQL;dim db as Database dim rs as recordsetset db=opendatabase(......) set rs=db.openrecordset(“表名”,dbopendynaset)while not rsSQL.eof rs.Addnew '为各字段赋值 rs.Update rsSQL.movenext wendrs.Close db.close应该说操作Access数据库的最佳方式还是DAO.
如果还是太慢,可以考虑去掉Access表的索引,添加完后重建。
如果字段一样,顺序一样,为字段的赋值可以采用如下方式: dim nFileldsCount as integer dim i as integernFileldsCount = rs.fields.countwith rs for i= 0 to nFileldsCount -1 .fields(i)=rsSQL.fields(i) next end with
原理: 先在MDB文件中建立目标表的Link表,然后用本地操作MDB数据库的方式复制一个表的全部或者部分,删除Link表。 至此,已经完成数据库的备份,此方法不通过循环,速度还算理想。实现: 首先假设ODBC中设置了一个Oracle的数据源,其数据库服务名为LinkDataBase,DSN为ORAODBC,用户名是Administrator,密码Password,把表Oracle_Table导入到C:\Temp.mdb的MDB_DATABASE,中间步骤链接表的名称为TempLink Dim DB As DAO.Database '数据库对象,DAO3.6 Dim tbLink As DAO.TableDef '表对象 ' 打开备份目标MDB Set DB = OpenDatabase("C:\Temp.mdb") ' 以下开始创建Link表 Set tbLink = DB.CreateTableDef("TempLink") ' 设置连结字符串 tbLink.Connect = "ODBC;DATABASE=LinkDataBase;UID=Administrator名;PWD=Password;DSN=ORAODBC" tbLink.SourceTableName = "LinkDataBase.Oracle_Table" DB.TableDefs.Append tbLink ' 复制表(可加条件) DB.Execute "select * into MDB_DATABASE from TempLink" ' 删除链接表 DB.TableDefs.Delete TempLink 至此完成
接下来从这个表里面取出记录集,再写到mdb数据库里。也就是说:
1。用mdb通过odbc链接一个oracle表
2。建立一个字段和oracle表相同的本地mdb数据表
3。用insert into 本地表 select * from 链接表 where 条件完成另外,ACCESS的数据库好像是有条数限制的,或者说当access数据库大到一定程度,比如100MB,操作起来会很慢的。
假如SQL查询结果为rsSQL;dim db as Database
dim rs as recordsetset db=opendatabase(......)
set rs=db.openrecordset(“表名”,dbopendynaset)while not rsSQL.eof
rs.Addnew
'为各字段赋值
rs.Update rsSQL.movenext
wendrs.Close
db.close应该说操作Access数据库的最佳方式还是DAO.
dim nFileldsCount as integer
dim i as integernFileldsCount = rs.fields.countwith rs
for i= 0 to nFileldsCount -1
.fields(i)=rsSQL.fields(i)
next
end with
先在MDB文件中建立目标表的Link表,然后用本地操作MDB数据库的方式复制一个表的全部或者部分,删除Link表。
至此,已经完成数据库的备份,此方法不通过循环,速度还算理想。实现:
首先假设ODBC中设置了一个Oracle的数据源,其数据库服务名为LinkDataBase,DSN为ORAODBC,用户名是Administrator,密码Password,把表Oracle_Table导入到C:\Temp.mdb的MDB_DATABASE,中间步骤链接表的名称为TempLink Dim DB As DAO.Database '数据库对象,DAO3.6
Dim tbLink As DAO.TableDef '表对象
' 打开备份目标MDB
Set DB = OpenDatabase("C:\Temp.mdb")
' 以下开始创建Link表
Set tbLink = DB.CreateTableDef("TempLink")
' 设置连结字符串
tbLink.Connect = "ODBC;DATABASE=LinkDataBase;UID=Administrator名;PWD=Password;DSN=ORAODBC"
tbLink.SourceTableName = "LinkDataBase.Oracle_Table"
DB.TableDefs.Append tbLink
' 复制表(可加条件)
DB.Execute "select * into MDB_DATABASE from TempLink"
' 删除链接表
DB.TableDefs.Delete TempLink
至此完成