如何把txt文本的内容写入SQL SERVER (100分)

  • 主题发起人 主题发起人 bjstar
  • 开始时间 开始时间
B

bjstar

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁:
你们好!在下有个问题,希望能得到各位富翁的指点,就是如何分析这个服务器log日志(2003-3-6.log)里的(ip地址,日期,时间)把它写入到相对应的数据库字段(ip,date,time )里,而且是这个log日志还是正在不断增加纪录的的情况下,
进行对这个log日志文件操作。如果解决问题,100分相送!我对delphi还不是很熟悉,希望你们能给出一个完整代码的例子!谢谢你们!
log日志内容如下:
#Software:Services-log
#Version: 4.1
#Date: 2003-03-26 08:21:32
#Fields: ip date time
10.0.0.130 2003-03-26 08:36:27
10.0.0.100 2003-03-26 08:56:40
10.0.0.100 2003-03-26 09:28:10
10.0.0.101 2003-03-26 09:58:56
10.0.0.100 2003-03-26 10:26:20
 
这个文件你可以直接读进来!
如果你无法取得三个属性存入数据库的话,可以按我的思路
f1-->file.log ss--->string;
1,首先判断readln(f1,ss)后取第一个字符是不是为#当不为#的时候开始读
2,以空格为判断子字符串的标记,
碰到空格则用copy,或substring把子字符串取出来。
3,把取得的字符串进行insert into table
 
baidie:
你好!我对delphi还不是很熟悉,希望你能给出一个完整代码的例子!谢谢你!
 
怎么读出日志文件的内容?
 
procedure TForm1.open1Click(Sender: TObject);
var
f1:textfile;
str1:string;
substr:array[1..3] of string;
i,j,k:integer;
chr:char;
begin

if opendialog1.Execute then
begin
assignfile(f1,opendialog1.FileName);
reset(f1);
j:=0;
k:=1;
while not eof(f1) do
begin
readln(f1,str1);
if pos('#',str1)=0 then
begin
for i:=1 to length(str1)+1 do
begin
chr:=str1;
if (chr=' ') or (i=length(str1)+1) then
begin
inc(j);
substr[j]:=copy(str1,k,i-k);
k:=i;
end;
end; //for
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into log values(:ip,:date,:time)');
parambyname('ip').AsString:=substr[1];
parambyname('date').asdate:=strtodate(substr[2]);
parambyname('time').AsTime:=strtotime(substr[3]);
try
execsql;
except
abort;
end;
end; //with
j:=0;
k:=1;
end; //if

end;
end;
closefile(f1);
showmessage('ok');
end;
测试通过,不知是不是你要表达的意思
 
baidie:
您好!谢谢你给出的代码,怎么我换成ADO的数据库连接方式行不通呀,你给我的这个BDE连接是就可以的,
我要求的也是你给出要实现这个功能的意思,还有再问您一下就是怎么清除已经写入数据库的内容?
希望能得到你的再次指点!
 
接受答案了.
 
什么类型的数据库,现在连数据库的工具很多,你可以直接在工具里写sql,这种方法比较
简单,也方便,还有就是用程序把数据库连接好了之后直接在程序中写语句
 
后退
顶部