有一张表的中数据,至少100000 条或是1000000或是更多,要导出到txt,
用什么方法能使导出时效率最高,原将数据写入Memo,然后Memo.lines.savetotxt这样速度很太慢,导出时程序就像死在那一样。

解决方案 »

  1.   

    方法1.ODBC数据源支持.txt格式的.
    在控制面板DBE Admisitrate新建一个"Microsoft Text Driver (*.txt; *"的数据源.
    ..............此处没用过,省略500字.^_^方法2.用ClientDataSet.SaveToFile保存成XML文件.另外,你用的方法只是多写了一步memo,这没必要,可以直接用File.writeLine方法逐行写.
    写硬盘本来就是很慢的事情,建议你用进度调配合application.ProcessMessages,
    我都是这么坐的.
      

  2.   

    用 SQLSERVER的导入导出工具啊?
      

  3.   

    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');
      

  4.   

    /*--实现数据导入/导出的存储过程 可以实现导入/导出 指定表 到文本文件
     支持自定义行/列分隔符--邹建 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
    gocreate 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
      

  5.   

    1.用bcp
    2.用ADO直接连接txt,连接字符串中Extended propert=text即可~
      

  6.   

    用三方控件dbgrideh应该快一点
      

  7.   

    niechunlai021(): dbgrideh 导出 100000 条或是1000000或是更多 也是很慢的。
      

  8.   

    e di na ge  shen a
      

  9.   

    47522341(睡到8:30) 的代码用了一下,很快!推荐!!10W 条数据,用了4秒就ok了!