导出数据库中表数据为CSV文件(带表头)

该博客介绍了如何通过执行SQLCMD命令,结合xp_cmdshell扩展存储过程,将数据库中的表数据导出为包含表头的CSV文件。具体操作演示了从IPVA_Builder库的Build_GetCsvResLog表中提取所有数据,并保存到E盘的123文件夹下,生成名为Build_GetCsvResLog.csv的文件。

EXEC xp_cmdshell 'sqlcmd -E -Q "select * from IPVA_Builder..Build_GetCsvResLog" -o E:\123\Build_GetCsvResLog.csv '

/****** Object:  StoredProcedure [dbo].[user_ExportDataCSV]    Script Date: 06/18/2017 17:48:09 ******/  
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[user_ExportDataCSV]') AND type in (N'P', N'PC'))  
DROP PROCEDURE [dbo].[user_ExportDataCSV]  
GO  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[user_ExportDataCSV]') AND type in (N'P', N'PC'))  
BEGIN  
EXEC dbo.sp_executesql @statement = N'-- =============================================  
-- Author:      tanxh  
-- Create date: 2017-06-18  
-- Description: 导出库中所有数据为csv文件  
-- EXEC [dbo].[user_ExportDataCSV] ''E:\123\''  
-- =============================================  
CREATE PROCEDURE [dbo].[user_ExportDataCSV]  
    @path nvarchar(1000)  
AS  
BEGIN  
declare @DBName nvarchar(100)  
declare @SQL varchar(2000)  
declare @n int,@count int  
declare @TableName nvarchar(100)  
create table #TableName  
(  
    ID INT IDENTITY(1,1),  
    Name nvarchar(100)  
)     
insert into #TableName   
select name from sysobjects where xtype=''u''  
select @count=COUNT(*) from sysobjects where xtype=''u''  
select @DBName=DB_NAME()  
set @n=1  
while(@n<=@count)  
begin  
    select @TableName=Name from #TableName where ID=@n  
    set @SQL=''sqlcmd -E -Q "select * from ''+@DBName+''..''+@TableName+''" -o  ''+@path+''''+@TableName+''.csv ''  
    exec xp_cmdshell @SQL  
    set @n=@n+1  
end    
END  
  
'   
END  
GO  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值