导出txt

ysx192 2007-04-17 11:25:14
有一张表的中数据,至少100000 条或是1000000或是更多,要导出到txt,
用什么方法能使导出时效率最高,原将数据写入Memo,然后Memo.lines.savetotxt这样速度很太慢,导出时程序就像死在那一样。
...全文
533 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HsWong 2007-04-25
  • 打赏
  • 举报
回复
用 47522341(睡到8:30) 给的方法
kciv 2007-04-25
  • 打赏
  • 举报
回复
niechunlai021(): dbgrideh 导出 100000 条或是1000000或是更多 也是很慢的。
kciv 2007-04-25
  • 打赏
  • 举报
回复
47522341(睡到8:30) 的代码用了一下,很快!

推荐!!

10W 条数据,用了4秒就ok了!
kciv 2007-04-25
  • 打赏
  • 举报
回复
47522341(睡到8:30) 的代码如果能解析一下就好了 :)
kciv 2007-04-25
  • 打赏
  • 举报
回复
我也遇到这样的问题 ,帮您顶

希望您能早日解决,也告诉我一下
dovelee 2007-04-25
  • 打赏
  • 举报
回复
e di na ge shen a
DreamMan81 2007-04-19
  • 打赏
  • 举报
回复
用三方控件dbgrideh应该快一点
47522341 2007-04-18
  • 打赏
  • 举报
回复
/*--实现数据导入/导出的存储过程

可以实现导入/导出 指定表 到文本文件
支持自定义行/列分隔符

--邹建 2003.07(引用请保留此信息)--*/

/*--调用示例
导出调用示例
--导出指定表,这里指定导出表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_new..地区资料',@rowsplit=','

导入调用示例
--导入指定表,这里指定导入表:地区资料
exec file2table 'zj','','','c:\zj.txt','xzkh_sa..地区资料',0
--*/

if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)
drop procedure File2Table
go

create procedure File2Table
@servername varchar(200) --服务器名
,@username varchar(200) --用户名,如果用NT验证方式,则为空''
,@password varchar(200) --密码
,@filename varchar(1000) --目录名+文件名
,@tbname varchar(500)='' --数据库..表名
,@isout bit=1 --1为导出(默认),0为导入
,@fdsplit varchar(10)='\t' --字段分隔符,默认为制表符
,@rowsplit varchar(10)='\n' --记录分隔符,默认为回车符
as
declare @sql varchar(8000)

set @sql='bcp "'+@tbname
+case when @isout=1 then '" out' else '" in' end
+' "'+@filename+'" /c' +' /S"'+@servername
+case when isnull(@username,'')='' then ''
else '" /U"'+@username end
+'" /P"'+isnull(@password,'')+'"'
+' /t"'+@fdsplit+'"'
+' /r"'+@rowsplit+'"'

exec master..xp_cmdshell @sql
go



qizhi_t 2007-04-18
  • 打赏
  • 举报
回复
cmdtxt:='bcp "SELECT * FROM b " queryout c:\Authors.txt -c -S localhost -U sa -P ';
// SELECT * FROM b 可以是任何可以获得记录集的脚本
// c:\Authors.tx 输出文件
//数据库
//sa 用户
//-p后面是密码
with tstringlist.Create do
begin
add(cmdtxt);
savetofile('a.bat');
free;
end;
winexec('a.bat',0);
deletefile('a.bat');
shixueli 2007-04-18
  • 打赏
  • 举报
回复
用 SQLSERVER的导入导出工具啊?
liangpei2008 2007-04-18
  • 打赏
  • 举报
回复
1.用bcp
2.用ADO直接连接txt,连接字符串中Extended propert=text即可~
redher 2007-04-17
  • 打赏
  • 举报
回复
方法1.ODBC数据源支持.txt格式的.
在控制面板DBE Admisitrate新建一个"Microsoft Text Driver (*.txt; *"的数据源.
..............此处没用过,省略500字.^_^

方法2.用ClientDataSet.SaveToFile保存成XML文件.

另外,你用的方法只是多写了一步memo,这没必要,可以直接用File.writeLine方法逐行写.
写硬盘本来就是很慢的事情,建议你用进度调配合application.ProcessMessages,
我都是这么坐的.

2,497

社区成员

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

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