您好,请问您有delphi将access所有数据实时读出来再插入Sqlserver数据库(不是导入)的相关代码么
建立两个Adoc, 一个连接Access库,一个连接SQL库,并建立对应的两个Adoq;
建立变量MID(var MID:integer;),存放总记录数(循环次数),语句如下:
with ADOQ_Access do
begin
close;
sql.clear;
sql.add('select count(*) from 表1');
open;
end;
MID:=ADOQ_Access.Fields[0].asinteger;
读取Access表记录,并存入数据集
4.建立循环,写入SQL表
for i:=1 to MID do
begin
with ADOQ_Access do
begin
close;
sql.clear;
sql.add('select * from 表1 where ID='+inttostr(i));
open;
end;
with ADOQ_SQL do
begin
close;
sql.clear;
sql.add('insert into 表2 (xx,xx,xx) values (access数据集内容)');
open;
end;
end;
数据集你是用哪个,怎么取出的?
with ADOQ_Access do
begin
close;
sql.clear;
sql.add('select * from 表1 where ID='+inttostr(i));
open;
end;
这段就是取出数据存入ADOQ_Access中的代码呀
完全现成的代码没有,不过思路是这样的。
1,先把Access里的数据读出来,存放在数据集里(我用的是delphi2007,数据集用的是kbm内存表)
2,判断数据集是否为空,为空终止执行。(Exit());
3,定位到第一行,然后执行循环到数据集最后一样,生成 insert SQL 语句,可在窗口添加一个 Memo控件。。Memo.lines.add(xxx);
SQL格式最好有判断,避免重复执行。比如:
if not exists (select ID from [table] where ID = ??)
insert into [table](xx,xx,xx)values(xx,xx,xx)
GO
4,连接 SQL server,执行 Memo控件里的 SQL脚本内容。
我的是delphi6的,循环那部分能具体下么?因为我的数据超级多,循环的话会不会效率很差