我写了一个从数据库获取XML数据并保存到一个指定文件的"存储过程"!大家批批
其实也就是调用了一下osql外部程序,只是图个方便,因为SQL Server2000支持XML,我在研究.NET的xml类时需要一些XML的数据文件,所以就写了这个存储过程,但是还有一些不足,生成的XML文件包含了很多空格,不过不影
响数据的使用。
各有有兴趣的话,拿去用用,也可以提提意见!
CREATE procedure sp_getXmlToFile
(
@serName nvarchar(30) = @@SERVERNAME /* SQL Server 服务器名(实例名) */
,@uid nvarchar(20) = NULL /* 用户名(default sa) */
,@pwd nvarchar(20) = NULL /* 密码(default null) */
,@dbName nvarchar(20) = NULL /* 数据库名(default current dbname) */
,@inFile nvarchar(100) = 'c:\insql.sql' /* 输入sql语句文件名及路径
(c:\insql.sql文件内容如:select * from tabname for xml auto,elements) */
,@outFile nvarchar(100) = 'c:\outxml.xml' /* 输入xml文件名及路径 */
)
As
/*
name : sp_getXmlToFile
function : Get query data from specify table or view as xml and write to a external xml file!
create by : 2003/04/01
author : xPilot (xpilot@21cn.com)
*/
Declare @sql nvarchar(2000) /* osql 执行字符串 */
If (@uid is NULL)
Select @Uid = SUSER_SNAME()
If (@pwd is NULL)
Select @Pwd = 'sa' /* 系统管理员密码*/
If (@dbName is NULL)
Select @DBName = DB_NAME()
Select @sql = N'exec master..xp_cmdshell '''
+ N'osql '
+ N' -n -h -s'
+ N' -U ' + @uid
+ N' -P ' + @pwd
+ N' -S ' + @serName
+ N' -d ' + @dbName
+ N' -i ' + @inFile
+ N' -o ' + @outFile + ''''
--Print @sql /* 用于调试 */
Exec (@sql) /* 执行osql命令 */
/*
在Dos生成一个存有sql语句的文件,过程如下:
1.Run... "cmd" ( to Dos Command line window)
2.type select * from yourtabname for xml auto,elements > c:\insql.sql
3.dir c:\insql.sql
*/
GO