如何高效引出数据

zjsyw 2006-03-24 09:56:21
将一个查询出的数据集(不到20万条记录)引出为TXT文件,自己写的程序很慢要半小时左右,可是用ACCESS或MS SQL自带的功能引出50万记录也不要多长时间,各位朋友有什么高招?
...全文
164 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayup234 2006-05-29
  • 打赏
  • 举报
回复
要看你有啥库

不一定是基本sql
daydayup234 2006-05-29
  • 打赏
  • 举报
回复
用“外”表,以下interbase库,不是你的要求,可以参照
////////////////////////////////////以下以“类型.TXT”做个外表T_TYPE_EXT
CREATE TABLE "T_TYPE_EXT"
EXTERNAL FILE '_CURRENTDIR_\类型.TXT'
(
"F_CODE" CHAR(6),
"F_TYPE" CHAR(10),
"F_NAME" CHAR(30),
"F_CONTENT" CHAR(60),
"F_RETURN" CHAR(2)
);
///////////////////以下把外表T_TYPE_EXT 中数据倒入内表T_TYPE,反之sql差不多吧
INSERT INTO
T_TYPE(F_CODE,F_TYPE,F_NAME,F_CONTENT,F_DATE)
SELECT
CAST(F_CODE AS INTEGER),F_TYPE,F_NAME,F_CONTENT,CURRENT_TIMESTAMP
FROM T_TYPE_EXT;
///////////////////不要外表T_TYPE_EXT 了
DROP TABLE T_TYPE_EXT;
zjsyw 2006-05-29
  • 打赏
  • 举报
回复
pp616(傻小子) ( ) 信誉:95
如何用文件映射呀,请详细说说,谢谢
pp616 2006-05-01
  • 打赏
  • 举报
回复
数据多的话写文件用文件映射比较快。
CACACACACA 2006-04-30
  • 打赏
  • 举报
回复
如果要自己实现,就要找底层API函数或COM了,难办.
yz20050510 2006-03-27
  • 打赏
  • 举报
回复
关注中!!
zjsyw 2006-03-27
  • 打赏
  • 举报
回复
lvjack(追逐梦想),
我的代码是有点问题,我没用STRINGLIST,而是用RICHEDIT控件,换成STRINGLIST是要好点,但效率还是不高,要6分钟左右。
jjwwang(风归叶),我是要在程序里实现的,就是感觉在程序里实现比ACCESS或SQL SERVER的慢;
lurel(城市陌生人),对呀,SQL SERVER是很快,自己编程怎样才能这么快呢?
songhtao(三十年孤独),我这软件是支持两种数据库,ACCESS怎么办呢?
0delphi(睡个舒服觉),用SAVETOFILE,我也试过,出来的好像不是存文本,哪位朋友知道怎么回事,TXT里有乱码。虽然速度是够快(SAVETOFILE是怎么做到速度这么快的?)
lurel 2006-03-25
  • 打赏
  • 举报
回复
操作数据有问题,SQL server倒数据的机制和你用ado不一样,你用dts就可以知道,1秒种能执行成百上千条记录.
我不懂电脑 2006-03-25
  • 打赏
  • 举报
回复
你可以调用dts导数据呀。
调用dts的方法http://topic.csdn.net/t/20041015/10/3458291.html
Jim@luckeeinc.com 2006-03-24
  • 打赏
  • 举报
回复
TStringList *sg = new TStringList;
while(!ADOQuery1->Eof)
{
sg->Add(ADOQuery1->FieldByName("...")->AsString);
ADOQuery1->Next();
}
sg->SaveToFile("...");
delete sg;
奥爸 2006-03-24
  • 打赏
  • 举报
回复
一般的数据集 控件 都有 SaveToFile 的方法,可以尝试一下

还有,循环20万次也不至于用半个小时,你把所有的数据,一次写入文件看看,不要读一次就写一次
lvjack 2006-03-24
  • 打赏
  • 举报
回复
估计是你的代码的问题,应该不会那么慢。贴代码出来看看
导出的代码FAQ区有
CACACACACA 2006-03-24
  • 打赏
  • 举报
回复
一条一条导出来,当然很慢了.
ACCESS可以也可以直接导出为.txt 或 .xls文件.
SQL大多用BCP导了, 当然也可以用OPENDATESET函数. (其实也是调用了更低级的函数)

建议在网上查询一下.

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧