SQL Server利用bcp命令把SQL语句结果生成文本文件

在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

时间: 2024-09-21 05:19:31

SQL Server利用bcp命令把SQL语句结果生成文本文件的相关文章

SQL Server利用bcp命令把SQL语句结果生成文本文件_MsSql

在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 cha

在SQL Server里把SQL语句结果生成文本文件

在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

SQL Server利用HashKey计算列解决宽字段查询的性能问题

SQL Server利用HashKey计算列解决宽字段查询的性能问题 主人翁        本文主人翁:MSSQL菜鸟和MSSQL老鸟. 问题提出        某年某月某日,某MSSQL菜鸟满脸愁容的跑到老鸟跟前,心灰意懒的对老鸟说"我最近遇到一个问题,很大的问题,对,非常大的问题".老鸟不急不慢的推了推2000度超级近视眼镜框,慢吞吞的说:"说来听听".        "我有一个100万数据量的表,有一个宽度为7500字段,不幸的是现在我需要根据这个字

SQL Server 利用锁提示优化Row_number()-程序员需知

原文:SQL Server 利用锁提示优化Row_number()-程序员需知 网站中一些老页面仍采用Row_number类似的开窗函数进行分页处理,此时如果遭遇挖坟帖的情形可能就需要漫长的等待且消耗巨大.这里给大家介绍根据Row_number()特性采用特定锁Hint提升查询速度.   直接上菜   脚本环境可在SQL Server优化技巧之SQL Server中的"MapReduce"找到   如下查询在分页中比较常见 set statistics time on select *

在SQL Server中使用命令调用SSIS包

  在SQL Server中可以使用dtexec命令运行SSIS包(2005以上版本),当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包. 具体操作步骤如下: 1.首先,当然是要在Business Intelligence中设计好包,并调试通过. 2.然后,有两种方式可以在SQL Server中使用命令运行SSIS包 第一种是直接执行ssis包文件,命令如: exec xp_cmdshell 'dtexec /f "c:test.dtsx"' 第二种是将包文

sqlserver-关于SQL SERVER如何获取执行过的语句

问题描述 关于SQL SERVER如何获取执行过的语句 我知道sqldiag和sql server profiler好像是可以获取SQL SERVER执行过的语句的,版本为2005,但是前者在试验时,未能在相关trc文件获取历史语句,后者倒是能在监视器获取到,但由于鄙人是单独下载的,有点问题,不能保存结果到表或者文件(蛋疼),但是profiler不知道是不是可以自动生成可分析的trc文件?或者能自动保存啥的?小弟需要隔一段时间自动进行一次规则过滤分析,所以不能采用手动保存.坐等专家解答..十万火

Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

原文:Sql server 数据库中,纯SQL语句查询.执行 单引号问题. 在默认值情况下, select 'abc',Titile from tb_Name;  ---输出内容 是abc: 如果想输出 单引号 'abc,需要使用select '''abc',Titile from tb_Name; ---这里用三个单引号'''abc: select '''abc''',Title from tbName;   输出内容是'abc':两边带有单引号: 谨记:如果字符串包含单引号,则需要在单引号前

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

原文:SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页) SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅途(www.Zuowenjun.cn) --CreateDate:2015-06-02 --Function:分页获取数据 /******************/ crea

在SQL Server中使用命令调用SSIS包的具体方法_MsSql

具体操作步骤如下: 1.首先,当然是要在Business Intelligence中设计好包,并调试通过. 2.然后,有两种方式可以在SQL Server中使用命令运行SSIS包 第一种是直接执行ssis包文件,命令如: exec xp_cmdshell 'dtexec /f "c:\test.dtsx"' 第二种是将包文件发布或者导入到Integration Services服务中,然后再执行. 发布包是在Business Intelligence中生成发布文件,并发布到Integr