文件数值导入数据库(100分)

  • 主题发起人 主题发起人 fkm_111
  • 开始时间 开始时间
F

fkm_111

Unregistered / Unconfirmed
GUEST, unregistred user!
目前在SQL中有数据采集表 表字段 ID 日期 时间 管道压力 温度
现在欲将D:/SS.TXT的压力模拟数值导入采集表字段管道压力中,通过代码控制.
SS.TXT的数值格式如下.
2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.04834-2.05078-2.04834-2.05078-2.05078-2.05078-2.05078-2.05078-2.04834-2.05078-2.05078-2.04834-2.04834-2.05078-2.05078-2.05078-2.05078-2.05078-2.04834-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.05078-2.04834-2.05078-

这里需要将文本中的模拟值输入SQL采集表的格式为
ID 日期 时间 压力
1 -2.05078
1 -2.05078
1 -2.05078
1 -2.05078
1 -2.05078
1 -2.05078
1 -2.05078
请大虾指点.

希望有代码提示.
 
只能读文件了,你的-是分隔符还是负号啊?
查查文件处理的相关函数吧。读好后存放到一个临时的数据集中,再处理。
 
将txt文件取出存入S:wideString,用如下代码导入数据库:

procudure input(S:wideString)
var i,j:integer
SQLCMD:Tadocommand;
s1:String;
begin
try
SQLCMD:=Tadocommand.create(nil);
SQLCMD.Connection:=ADOConnection1; //指定数据库连接
SQLCMD.CommandType:=cmdText
with SQLCMD do
while i<length(s) do
begin
s1:='';
for j:=0 to 7 do s1:=s1+s[i+j];
close; //这句不知道是否正确,现在没有环境调试了,不好意思
Commandtext:=' insert into 采集表(id,压力)'
+' values(1,'+s1+')';
Execute;
i:=i+8;
end;
finally
SQLCMD.free;
end;

end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
j:integer;
s2:string;
s:string[8];
f:textfile;
begin
AssignFile(f,'ss.txt');
reset(f);
try
while not Eof(f)do
begin
readLn(f,s2);
j:=1;
while j<=length(s2) do
begin
s:='-'+copy(s2,j,8);
j:=j+8;
memo1.Lines.Add(s);//插入到你的数据采集表中,参考楼上
end;
end;
finally
closeFile(f);
end;
end;
 
-
是负号,这是没有输入信号时候的随机值,有信号之后就不是负号了。
 
有这样一些问题你需要注意:
1、你的数据之间应该分隔,比如使用";"分隔,或者你固定数据长度。这样在你进行数据处理的时候才可以有效进行数据分解。
2、从你给出的数据,好像你写入数据的时候没有分行,这样不太好。你采集数据完成后,应该固定每行保存多少组数据,这样也可以便于你进行数据分解。
其他的,xmpilot已经帮你写好了代码。
 
我已经测试通过了。非常感谢,散分。
 
后退
顶部