您当前的位置:首页>>数据库>>正文
 
在SQL Server里把SQL语句结果生成文本文件
作者: 来源: 日期:2007-5-15 9:20:17  点击次数:
在SQL Server里可以调用DOS下的命令行工具bcp来实现把表里的数据或者SQL语句结果生成文本文件。

BCP命令的参数格式:

  BCP {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-V file format version] [-q quoted identifier]
  [-C code page specifier]  [-t field terminator]    [-r row terminator]
  [-i inputfile]            [-o outfile]             [-a packetsize]
  [-S server name]          [-U username]            [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]
 
  但命令行下面的操作在传递变量上不太灵活,我参照 CSDN里邹健写File2Table的例子
 
  写了一个把SQL语句结果生成文本文件的系统存储过程 sp_sql_query_to_file.sql:
 
/***************************************************************************
//  说明 : 根据SQL语句生成文本文件 (带日期戳,字段用逗号,分隔)
//    SQL语句里所有出现的表名要用 [数据库名].[用户名].[表名] 来详细标记
//  创建 : maggiefengyu  邮件 : maggiefengyu@tom.com  日期 :2006-03-03
***************************************************************************/
create  PROCEDURE sp_sql_query_to_file(
@servername varchar(50),  --服务器名
@username varchar(50), --用户名,如果用NT验证方式,则为空''
@password varchar(50) ,  --密码
@sql_query varchar(2000) , --SQL查询语句,有字符条件时用单引号
@filePath_name varchar(1000), --导出路径和文件名
@date datetime --保存文件时的生成日期戳
)AS
DECLARE @sql varchar(8000)
SET @sql='bcp "'+@sql_query + '" queryout '+' "'+@filePath_name+'_'+
convert(varchar(12),@date,112)+'.txt " /t "," /w'
  +' /S '+@servername
  +CASE WHEN ISNULL(@username,'')='' THEN '' ELSE ' /U '+@username END
  +' /P '+ISNULL(@password,'')
 
select @sql 

EXEC master..xp_cmdshell @sql

IF @@Error<>0 BEGIN
print '生成文件时出错了,请查看!'+@@Error
END
GO
 
  调用方法举例:
 
  DECLARE @dt datetime
DECLARE @sql_query varchar(6000)
set @dt=getdate()
set @sql_query='select convert(varchar,orderdate,120),'+
'convert(varchar,requireddate,120),'+
'convert(varchar,shippeddate,120),'+

本新闻共2页,当前在第1页  1  2  


上一篇:MYSQL和MS SQL SERVER对比分析表
下一篇:使用Xmanager 远程连接Solaris的方法

  北京总部: 4006-505-808
  上 海 部: 021-58358765
  深 圳 部: 0755-83692929
  浙 江 部: 13666673722
  广 州 部: 020-83821091
  重 庆 部: 023-86870422
  昆 明 部: 15987117834
  哈尔滨部: 13946167430
  其它地区: 4006-505-808

经典案例
中国石油管理局-Oracle数据库恢
中国网通-IBM EXP300磁盘阵列数
大连鸿德经贸有限责任公司-SQL
中国地质环境监测院-HP LH3000
藁城市东街百货-EFS文件解密成
工商银行山东分行-AIX删除LV数
中央电视台新闻评论部-苹果分
promise乔鼎硬盘阵列数据恢复成
麒麟童文化-苹果分区无法打开,
NAS 8100服务器数据恢复成功 
解决方案
raid磁盘阵列OFFLINE后的应急方
磁盘未被格式化,是否格式化数据
误GHOST、误一键恢复灾难应急方
误删除、误格式化数据灾难应急
LINUX FSCK数据出错灾难应急方
北亚数据恢复 - 联系我们 - 关于北亚 - 友情链接 - 网站地图 - RSS聚合 
版权所有 北京北亚数据恢复中心
24小时免费咨询电话:4006-505-808 或 800-810-580
中关村部:北京市海淀区中关村大街11号E世界A座8层832B室
皂君庙部:北京市海淀区学院南路68号吉安大厦C座(汇智楼)528室