`

SQLSERVER,不使用BCP,把查询结果输出为txt文本文件的存储过程

阅读更多

 SQLSERVER,不使用BCP,把查询结果输出为txt文本文件的存储过程

由于有些服务器上,数据库由于服务器安全问题,禁用了cmd_shell 不能用BCP进行查询结果文本化输出。

所以特写了个存储过程。用于生成文本文件

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO


ALTER  PROCEDURE stp_ExportDataToTxt
/**//************************************************************************
 *                    Powered by Tang Ren (R)                           *
 *                          2007-7-11                                   *
 ***********************************************************************
*/


      
@sqlstr nvarchar(4000),                   --查询语句
      @path nvarchar(1000),                --文件保存文件夹
      @fname nvarchar(250)                --文件保存名字
as
    
--Define variable
    declare @strPath varchar(300)         --文件保存的地址 
    declare @colsCount int
    
declare @hr int
    
DECLARE @object int  
    
DECLARE @src varchar(255), @desc   varchar(255)   
    
Declare @file int   
        
declare @sql varchar(1000)
    
declare @tbname sysname
    
        
--Initialize variable
    set @tbname = 'tb_' + convert(varchar(40),newid()) 
    
set @sql = replace(@sqlstr,'from','into ['+@tbname+'] from')
    
set @strPath = ''
    
print @sql
    
exec(@sql)

    
--Estimate the dir suffix, if it not end in '' then add it.
    if right(@path,1)<>''
      
set @path=@path+''
    
set   @strPath=@path+@fname 
    
print @strPath    

    
--Create FSO Object for file operation.
    EXEC   @hr   =   sp_OACreate   'Scripting.FileSystemObject',   @object   OUT   
    
IF   @hr   <>   0   
    
BEGIN   
          
EXEC   sp_OAGetErrorInfo   @object,   @src   OUT,   @desc   OUT     
          
SELECT   hr=convert(varbinary(4),@hr),   Source=@src,   Description=@desc   
            
RETURN   
    
END   
    
        
-- Create File ,if file exist then override it.
    EXEC   @hr   =   sp_OAMethod   @object,   'CreateTextFile',   @file   OUTPUT   ,   @strPath   
    
IF   @hr   <>   0   
    
BEGIN   
          
EXEC   sp_OAGetErrorInfo   @object   
            
RETURN   
    
END
    
    
set @sql ='select * from syscolumns where id=object_id('''+@tbname+''')'
    
print object_id(@tbname)

    
-- Create initial field name with each columns
    declare @name varchar(1000)
    
declare @flag int
    
set @name=''
    
set @flag=0
    
declare cur_data CURSOR for
    
select name from syscolumns where id=object_id(@tbname)
    
open cur_data
    
fetch next from cur_data into @name
    
while @@fetch_status=0
    
begin
      
if @flag=1
        
exec sp_OAMethod @file,'Write',NULL,','
      
exec sp_OAMethod @file,'Write',NULL,@name
      
set @flag=1
      
fetch next from cur_data into @name
    
end
    
close cur_data
    
deallocate cur_data
 
    
EXEC   @hr   =   sp_OAMethod   @file,   'Close',NULL   
    
IF   @hr   <>   0   
    
BEGIN   
          
EXEC   sp_OAGetErrorInfo   @object   
            
RETURN   
    
END   
    
    
set @sql = 'insert into openrowset(''microsoft.jet.oledb.4.0'',''text;hdr=no;database='+@path+''',''select * from['+@fname+']'')' +@sqlstr
    
print @sql
    
exec(@sql)

    
set @sql='drop table ['+@tbname+']'
    
print @sql
    
exec(@sql)

GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
 
分享到:
评论

相关推荐

    如何将SQL Server中的表变成txt 文件.doc

    通过使用`bcp`命令,我们可以轻松地将SQL Server中的表转换为TXT文件。这种操作不仅简单快捷,而且非常适合需要定期备份或共享数据的工作场景。希望本文能帮助您更好地理解和掌握如何使用`bcp`工具。

    SQL_Server数据导入导出工具BCP详解

    SQL Server的BCP(Bulk Copy Program)工具是一个强大的命令行实用程序,用于高效地导入大量数据到SQL Server数据库,或导出数据到文件。在本文中,我们将深入探讨BCP的工作原理、使用方法以及相关最佳实践,以帮助...

    sqlserver bcp导出到excel

    总的来说,通过BCP将数据从SQL Server导出到Excel涉及多个方面,包括正确使用BCP命令行参数、通过SQL Server存储过程执行BCP命令、处理Excel兼容性问题以及使用格式文件控制数据转换过程。掌握这些技术对于有效管理...

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

    这个存储过程会生成一个名为`C:\Data\ExportedData_20220303.txt`的文件,其中包含查询结果,字段之间用逗号分隔。 总的来说,`bcp`命令结合自定义存储过程,提供了强大且灵活的数据导入导出功能,对于SQL Server...

    SQL Server 导入导出大全

    - SQL Server 本身支持将查询结果导出为 XML 格式,无需额外工具。 ```sql SELECT * FROM table FOR XML AUTO ``` 以上介绍的方法可以帮助数据库管理员或开发人员有效地进行数据的迁移工作。每种文件类型的导入...

    将数据库输出到一个文本文件中

    2. **数据转换**:在查询结果准备好后,可能需要进行一些数据转换,比如日期格式的标准化、数值类型的转换等,以适应文本文件的格式要求。这可以通过SQL语句直接完成,或者在数据导出后使用编程语言如Python、Java等...

    sql数据库导出到txt文件

    VB提供了ADODB(ActiveX Data Objects)库,可以连接到SQL Server并执行查询,然后将结果写入TXT文件。 6. 数据格式调整:在导出过程中,你可能需要调整日期、数字等格式,使其符合目标系统的规范。这可以通过在VB...

    BCP命令详解

    BCP 命令可以用来将数据从 SQL Server 导出到文本文件中,也可以将数据从文本文件导入到 SQL Server 中。 BCP 命令共有四个动作可以选择: 1. 导入:这个动作使用 in 命令完成,后面跟需要导入的文件名。例如:bcp...

    sqlserver定期导出excel表源代码.txt

    根据给定文件的信息,我们可以提炼出以下IT领域的关键知识点,主要围绕着SQL Server数据库系统、存储过程、数据导出到Excel以及系统权限管理等方面。 ### SQL Server存储过程 存储过程是预编译的一系列SQL语句集合...

    SQLserver远程或本地连接ACCESS教程.pdf

    在学习SQL Server与Microsoft Access之间的数据导入导出操作时,我们首先需要了解如何使用Transact-SQL语句来实现这一目的。Transact-SQL(T-SQL)是SQL Server使用的SQL语言的扩展,它允许我们在SQL Server环境内...

    SQL Server数据库bcp导出备份文件应用示例

    在介绍SQL Server数据库使用bcp命令导出备份文件的应用示例中,首先需要了解bcp(Bulk Copy Program)是SQL Server中的一个实用程序,用于高效地导入导出大量数据。bcp可以将数据快速导入到SQL Server表中,也可以从...

    SQLServer数据库表中数据导出成SQL语句工具

    针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...

    SQL_Server数据库转换成Access数据库图片教程

    5. **转换查询和存储过程**:Access不支持T-SQL,因此需要重新编写SQL Server的查询和存储过程。Access使用Jet或ACE引擎的SQL方言,称为Access SQL。 6. **验证数据一致性**:确保转换后的Access数据库中的数据与...

    导出sqlserver 2000的表结构

    除了SQL查询,还可以使用SQL Server提供的扩展存储过程`xp_cmdshell`结合BCP命令来导出数据和表结构。BCP(Bulk Copy Program)是SQL Server的一个工具,用于快速导入导出大量数据。 #### 2. BCP命令解析 - **`...

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,或者通过编写SQL查询或存储过程来提取BLOB数据。通常,我们可以将BLOB数据转化为HEX字符串或Base64编码,以便在文本格式下传输。 3. **...

    sqlserver 数据库导出excel

    为了能够使用 OPENROWSET 或 BCP 导出数据至 Excel 文件,需要对 SQL Server 的一些配置参数进行设置。 **具体步骤:** - **启用 Ad Hoc Distributed Queries:** ```sql EXEC sp_configure '...

    SQLserver 表导出SQL脚本的工具

    导出的SQL脚本通常保存为`.sql`文件,可以直接在文本编辑器中查看或在SSMS中执行。确保文件编码为UTF-8,以避免字符集问题。 7. 版本兼容性 当导出脚本时,记得选择与目标环境匹配的SQL Server版本。不同的SQL ...

    考勤机采集程序,导入的文本可批量通过bcp.exe快速写入SQL表

    在这种情况下,考勤机采集到的数据被整理成文本格式,然后使用`bcp.exe`快速批量地将这些数据加载到SQL数据库的特定表中。这种方法相对于逐条插入数据,效率更高,尤其在处理大量数据时更为显著。 关于“文本快速...

    BCP文件对比工具

    BCP(Bulk Copy Program)是SQL Server提供的一种批量数据导入导出工具,它允许用户高效地将大量数据从操作系统文件传输到SQL Server数据库,或者从数据库导出到文件。在IT行业中,BCP文件通常存储着数据库表的数据...

Global site tag (gtag.js) - Google Analytics