RT 从MSSQL数据库向Access导入数据
ADOConnection1,ADOQuery1 连接MSSQL数据库进行表数据查询,ADOConnection2,ADOQuery2 连接Access数据库进行数据插入.
MSSQL表中数据在11万+,全部导入Access,但两表字段并不完全相同或变化导入,(如:id+100 as new_id)
try
.. //Query1 数据查询
ADOQuery1.Open;
while not eof do
begin
.. //Query2数据插入
ADOQuery2.Prepared;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;
except
end;
为了提高速度,已经把事务取消了,ADOQuery的CacheSize设为1000,Lock Type设为ltBatchOptimistic 但速度还是很慢,还要如何才能提高速度?
象这种批量导入的有没有其他的方法进行?
很急,各位大哥大姐的救下啊,不胜感激,在线等.....
ADOConnection1,ADOQuery1 连接MSSQL数据库进行表数据查询,ADOConnection2,ADOQuery2 连接Access数据库进行数据插入.
MSSQL表中数据在11万+,全部导入Access,但两表字段并不完全相同或变化导入,(如:id+100 as new_id)
try
.. //Query1 数据查询
ADOQuery1.Open;
while not eof do
begin
.. //Query2数据插入
ADOQuery2.Prepared;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;
except
end;
为了提高速度,已经把事务取消了,ADOQuery的CacheSize设为1000,Lock Type设为ltBatchOptimistic 但速度还是很慢,还要如何才能提高速度?
象这种批量导入的有没有其他的方法进行?
很急,各位大哥大姐的救下啊,不胜感激,在线等.....
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GOexec master..xp_cmdshell 'bcp "select * from sysobjects" queryout d:\a.mdb -c -q -Usa -Ppwd'
insert into openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表
/*************导入Access********************/
insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表)
insert into openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表这样
try
.. //Query1 数据查询
ADOQuery1.Open;
while not eof do
begin
.. //Query2数据插入
ADOQuery2.Prepared;
ADOQuery2.ExecSQL;
ADOQuery1.Next;
end;
except
end; 必然很慢的当然你也可以使用TBatchMove构建实现
不过两表字段并不完全相同或变化导入,(如:id+100 as new_id) 具体要怎么写哦???
'x:\A.mdb';'admin';'',A表)
可以把*写为各字段和计算公式
/*************导出到Access********************/
insert into openrowset('Microsoft.Jet.OLEDB.4.0',
'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表是这么写吗?语法不对啊?我从来没写过这种语句....是我太苯了?急死我了..insert into openrowset('Microsoft.Jet.OLEDB.4.0',
'X:\A.mdb';'admin';'',A表(id,name,user,no)) select id+10 as id,names,user,p_no from vv.dbo.B表
Select * Into A表 From B表 IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=vv;]
insert into openrowset('Microsoft.Jet.OLEDB.4.0','D:\b.mdb';'admin';'',dep(serial,name))
select serial,name from vv.dbo.deps服务器: 消息 170,级别 15,状态 1,行 1
Line 1: Incorrect syntax near '('.到底是错在哪里啊?