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
分享到:
相关推荐
通过使用`bcp`命令,我们可以轻松地将SQL Server中的表转换为TXT文件。这种操作不仅简单快捷,而且非常适合需要定期备份或共享数据的工作场景。希望本文能帮助您更好地理解和掌握如何使用`bcp`工具。
SQL Server的BCP(Bulk Copy Program)工具是一个强大的命令行实用程序,用于高效地导入大量数据到SQL Server数据库,或导出数据到文件。在本文中,我们将深入探讨BCP的工作原理、使用方法以及相关最佳实践,以帮助...
总的来说,通过BCP将数据从SQL Server导出到Excel涉及多个方面,包括正确使用BCP命令行参数、通过SQL Server存储过程执行BCP命令、处理Excel兼容性问题以及使用格式文件控制数据转换过程。掌握这些技术对于有效管理...
这个存储过程会生成一个名为`C:\Data\ExportedData_20220303.txt`的文件,其中包含查询结果,字段之间用逗号分隔。 总的来说,`bcp`命令结合自定义存储过程,提供了强大且灵活的数据导入导出功能,对于SQL Server...
- SQL Server 本身支持将查询结果导出为 XML 格式,无需额外工具。 ```sql SELECT * FROM table FOR XML AUTO ``` 以上介绍的方法可以帮助数据库管理员或开发人员有效地进行数据的迁移工作。每种文件类型的导入...
2. **数据转换**:在查询结果准备好后,可能需要进行一些数据转换,比如日期格式的标准化、数值类型的转换等,以适应文本文件的格式要求。这可以通过SQL语句直接完成,或者在数据导出后使用编程语言如Python、Java等...
VB提供了ADODB(ActiveX Data Objects)库,可以连接到SQL Server并执行查询,然后将结果写入TXT文件。 6. 数据格式调整:在导出过程中,你可能需要调整日期、数字等格式,使其符合目标系统的规范。这可以通过在VB...
BCP 命令可以用来将数据从 SQL Server 导出到文本文件中,也可以将数据从文本文件导入到 SQL Server 中。 BCP 命令共有四个动作可以选择: 1. 导入:这个动作使用 in 命令完成,后面跟需要导入的文件名。例如:bcp...
根据给定文件的信息,我们可以提炼出以下IT领域的关键知识点,主要围绕着SQL Server数据库系统、存储过程、数据导出到Excel以及系统权限管理等方面。 ### SQL Server存储过程 存储过程是预编译的一系列SQL语句集合...
在学习SQL Server与Microsoft Access之间的数据导入导出操作时,我们首先需要了解如何使用Transact-SQL语句来实现这一目的。Transact-SQL(T-SQL)是SQL Server使用的SQL语言的扩展,它允许我们在SQL Server环境内...
在介绍SQL Server数据库使用bcp命令导出备份文件的应用示例中,首先需要了解bcp(Bulk Copy Program)是SQL Server中的一个实用程序,用于高效地导入导出大量数据。bcp可以将数据快速导入到SQL Server表中,也可以从...
针对这个需求,存在一种名为“SQLServer数据库表中数据导出成SQL语句工具”的实用程序,它能够帮助我们高效地完成这项任务。这个工具通常以MHT(Multi-Part/Related)格式提供,这是一种单一文件Web页面存储格式,...
5. **转换查询和存储过程**:Access不支持T-SQL,因此需要重新编写SQL Server的查询和存储过程。Access使用Jet或ACE引擎的SQL方言,称为Access SQL。 6. **验证数据一致性**:确保转换后的Access数据库中的数据与...
除了SQL查询,还可以使用SQL Server提供的扩展存储过程`xp_cmdshell`结合BCP命令来导出数据和表结构。BCP(Bulk Copy Program)是SQL Server的一个工具,用于快速导入导出大量数据。 #### 2. BCP命令解析 - **`...
2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,或者通过编写SQL查询或存储过程来提取BLOB数据。通常,我们可以将BLOB数据转化为HEX字符串或Base64编码,以便在文本格式下传输。 3. **...
为了能够使用 OPENROWSET 或 BCP 导出数据至 Excel 文件,需要对 SQL Server 的一些配置参数进行设置。 **具体步骤:** - **启用 Ad Hoc Distributed Queries:** ```sql EXEC sp_configure '...
导出的SQL脚本通常保存为`.sql`文件,可以直接在文本编辑器中查看或在SSMS中执行。确保文件编码为UTF-8,以避免字符集问题。 7. 版本兼容性 当导出脚本时,记得选择与目标环境匹配的SQL Server版本。不同的SQL ...
在这种情况下,考勤机采集到的数据被整理成文本格式,然后使用`bcp.exe`快速批量地将这些数据加载到SQL数据库的特定表中。这种方法相对于逐条插入数据,效率更高,尤其在处理大量数据时更为显著。 关于“文本快速...
BCP(Bulk Copy Program)是SQL Server提供的一种批量数据导入导出工具,它允许用户高效地将大量数据从操作系统文件传输到SQL Server数据库,或者从数据库导出到文件。在IT行业中,BCP文件通常存储着数据库表的数据...