通过程序实现Excel导入SQL
需求如下:
1)通过Delphi写出的桌面程序将固定格式的Excel导入到SQL中指定的表中,这些表的格式与Excel的格式完全一致,不考虑用SQL的企业管理器或者查询分析器通过T-SQL语句实现,因为用户不可能执行这些操作
2)因为数据量较大,希望导入效率能较高,一条条的读记录就算了
3)因为以后的文件可能会包含了现有的文件,根据多个关键字共同确定重复,若重复了,则不再读取此条记录到数据表中
因为是初学Delphi,希望大家能介绍的稍微详细点,最好给个实例
备注:
在之前搜索了大富翁和CSDN上的很多类似的帖子,要么是看不懂,要么是单个记录一条条的实现,最多的是通过T-SQL语句实现的。
实在不行的话大家也可以介绍下现有的可以实现以上功能的小应用。
谢谢大家,o(∩_∩)o...。
[解决办法]
这个控件不咋地。建议用DevExpress的SpreadSheet,速度快多了。或者Advanced Import控件集也比你说的这个强。
[解决办法]
你先试试楼上的,在查询分析器能正确完成你的工作后,才好进行下一步工作啊
ExecSqlString(楼上测试通过的sql语句,ADOConnection1);
//ExecSqlString定义在下面
//执行指定SQL语句
function ExecSqlString(sql:string;adoconn:TADOConnection):boolean;
var
ADOcmd:TADOQuery;
begin
CoInitializeEx(nil,COINIT_MULTITHREADED);
ADOcmd := tadoquery.Create(self);
try
try
ADOcmd.Connection := adoconn;
ADOcmd.Close();
ADOcmd.SQL.Clear;
ADOcmd.SQL.Add(sql);
ADOcmd.ExecSQL;
Result := true;
ADOcmd.Close();
except
on e: exception do
begin
result:=false;
end;
end;
finally
adocmd.free;
CoUninitialize;
end;
end;
[解决办法]
用短信猫做短信平台,比较稳定,不受网络安全影响,响应及时,适合一些重要的安全性高的业务需求,但是发送速度有限制,一般是800条/小时
sp短信通道发送速度快,但是由于接入的开发商很多,在服务器不多的情况下,必然会排队,有时繁忙时提交一条短信,第二天才能收到,而且网络不正常时,也会影响使用
建议一些管理软件用短信猫做短信平台
1.方寸GSM-Modem 短信平台
GSM-Modem 短信平台,无需联网,只需一台电脑,一个短信猫(或手机),一个短信开发接口,就可轻松建立短信服务器,可实现短信收发,短信互动等功能,一台电脑可以连接多个短信猫硬件,从而提高吞吐量。
2.方寸短信数据库接口(手机短信接口,短信二次开发控件)
通过本数据库接口,能使你现有的系统(如OA、CRM、ERP等系统)轻松实现无线办公功能,无论你用的是哪种开发语言(VB\VC\VFP\asp\jsp\java\pb\delphi...),只要你的系统能读写数据库即可对接!你仅需要在指定的表中添加记录,本接口程序就自动进行发送短信了,收到的短信会自动保存到数据库里,所以,您不需要了解任何有关数据通信方面的知识,就可实现手机短信的收发等功能!
电话:0755-25996144
联系人:陈先生
网址:http://www.fcwww.com
qq:393376247
[解决办法]
sql.Add( 'insert into s3001 select * from l3001 where airline_iata= 'fm ' ');
语句有问题了,在delphi中字符串不是这么表示的吧。
应该改为:sql.Add( 'insert into s3001 select * from l3001 where airline_iata= ' 'fm ' ' ');
[解决办法]
不管用控件也好还是用什么,既然要判断是否又重复数据肯定是一条一条判断
只是代码的执行效率如何
我以前做的就是先将excel数据直接导入到access的临时表中
然后由临时表导入sql server中,添加时判断是否有重复数据。
完成后删除临时表
我觉得也挺快的,也许是数据量不大吧,这样挺方便的