方法1.ODBC数据源支持.txt格式的. 在控制面板DBE Admisitrate新建一个"Microsoft Text Driver (*.txt; *"的数据源. ..............此处没用过,省略500字.^_^方法2.用ClientDataSet.SaveToFile保存成XML文件.另外,你用的方法只是多写了一步memo,这没必要,可以直接用File.writeLine方法逐行写. 写硬盘本来就是很慢的事情,建议你用进度调配合application.ProcessMessages, 我都是这么坐的.
用 SQLSERVER的导入导出工具啊?
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');
/*--实现数据导入/导出的存储过程 可以实现导入/导出 指定表 到文本文件 支持自定义行/列分隔符--邹建 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
在控制面板DBE Admisitrate新建一个"Microsoft Text Driver (*.txt; *"的数据源.
..............此处没用过,省略500字.^_^方法2.用ClientDataSet.SaveToFile保存成XML文件.另外,你用的方法只是多写了一步memo,这没必要,可以直接用File.writeLine方法逐行写.
写硬盘本来就是很慢的事情,建议你用进度调配合application.ProcessMessages,
我都是这么坐的.
// 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');
支持自定义行/列分隔符--邹建 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
2.用ADO直接连接txt,连接字符串中Extended propert=text即可~