MSSQL导出表/视图中的数据为html 文件
IF OBJECT_ID(N'dbo.p_ExportHtml') IS NOT NULL
DROP PROC dbo.p_ExportHtml;
GO
/*-- == 导出表/视图中的数据为html 文件======================
此存储过程用于将指定的表/视图中的数据导出为 html 文件
由于是使用存储过程, 因此文件目录基于 sql server 服务器
存储过程中会使用xp_cmdshell 调用bcp 来写文件
因此必须打开xp_cmdshell 功能, 可以使用下面的脚本实现
EXEC sp_configure N'show advanced options', 1 RECONFIGURE;
EXEC sp_configure N'xp_cmdshell', 1 RECONFIGURE;
---------------------
-- 调用示例
EXEC dbo.p_ExportHtml
@object_name = N'sys.objects',
@file_name = N'c:\test.html';
---------------------
-- 环境要求
适用于sql server 2005 或者更高的版本
-- ==== 邹建2008.11(引用请保留此信息) =============== */
CREATE PROC dbo.p_ExportHtml
@object_name sysname,
@file_name nvarchar(260),
@title nvarchar(1000) = NULL -- html 标题, 为NULL时使用@object_name
AS
SET NOCOUNT ON;
DECLARE
@sql_field nvarchar(max),
@sql_body nvarchar(max);
SELECT
@sql_field = N'',
@sql_body = N''
SELECT
@sql_field = @sql_field
+ N' UNION ALL SELECT field_name = N' + QUOTENAME(C.name, N''''),
@sql_body = @sql_body
+ N', [td/@align] = '
+ QUOTENAME(
CASE
WHEN T.name LIKE N'%int'
OR T.name LIKE N'%money'
OR T.name IN(N'real', N'float', N'decimal', N'numeric')
THEN 'right'
WHEN T.name IN(N'bit')
THEN 'center'
ELSE 'left'
END,
'''')
+ N', [td] = '
+ CASE
WHEN T.name IN(N'xml')
THEN N'CONVERT(nvarchar(max), ' + QUOTENAME(C.name) + N')'
ELSE QUOTENAME(C.name)
END
+ N', NULL'
FROM sys.all_columns C
INNER JOIN sys.types T
&nbs