我就用了一个adoquery,两个button//编译都可以通过 procedure TForm1.Button1Click(Sender: TObject); var s:tstream; begin s:=tfilestream.Create('e:\a.txt',fmOpenRead); //这个地方怎么只可以存文本?xls就不行? with adoquery1 do begin //初始化数据库->create table test(a int,b blob); SQL.Clear; SQL.Add('insert into test(a,b) values(:a,:b)'); Parameters.ParamByName('a').Value:=1; parameters.ParamByName('b').LoadFromStream(s,ftBlob); //运行的时候只可以存放.txt的文件,*.xls就不可以? ExecSQL; end; end;procedure TForm1.Button2Click(Sender: TObject); begin //在这个按扭的onclick事件一发生就会报错-> //运行的时候说数据类型不一致,数据类型不支持 with adoquery1 do begin sql.text:='select a,b from test'; open; TBlobField(FieldByName('b')).SaveToFile('e:\aa.txt');
PB的数据窗口支持对excel的文件导入导出,你可以用pb的数据库窗口写个uo,编译称为com(pb里面是“老”称呼,ole),用delphi调用com吧呵呵,太累了吧
EXCEL和oracle都可以配置成ODBC,然后你可以写SQL语句直接导了。
在记事本中输入:
load data
infile '*.txt'
append into table tablename
fields terminated by x'09'
(定义列对应的顺序)
然后把它保存为input.ctl
然后在c:>sqlldr system/manager control=input.ctl
最好把这两个文件放到c:下
[email protected]
procedure TForm1.Button1Click(Sender: TObject);
var
s:tstream;
begin
s:=tfilestream.Create('e:\a.txt',fmOpenRead); //这个地方怎么只可以存文本?xls就不行?
with adoquery1 do
begin
//初始化数据库->create table test(a int,b blob);
SQL.Clear;
SQL.Add('insert into test(a,b) values(:a,:b)');
Parameters.ParamByName('a').Value:=1;
parameters.ParamByName('b').LoadFromStream(s,ftBlob);
//运行的时候只可以存放.txt的文件,*.xls就不可以?
ExecSQL;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
begin //在这个按扭的onclick事件一发生就会报错->
//运行的时候说数据类型不一致,数据类型不支持
with adoquery1 do
begin
sql.text:='select a,b from test';
open;
TBlobField(FieldByName('b')).SaveToFile('e:\aa.txt');
close;
end;end;
天那,为什么?真是浪费时间还有就是blob字段的最大长度是不是32k
如过需要更大的字段岂不是会出现错误?
如果一个字段就要纪录大于32k的数据,就要考虑其他存储方式了,因为会大大降低数据库的性能。造成诸如行迁移等问题