r0tt Asked: 2016-12-31 00:04:36 +0800 CST2016-12-31 00:04:36 +0800 CST 2016-12-31 00:04:36 +0800 CST SQL Server - 将表导出到 XML 文件 772 我需要将 sql server 2008 R2 数据库的所有表 (500) 导出到 XML。最好和最快的方法是什么? sql-server-2008 xml 1 个回答 Voted Best Answer McNets 2016-12-31T05:31:21+08:002016-12-31T05:31:21+08:00 可以使用 BCP 实用程序来完成这项工作。 先决条件: 您需要配置您的服务器,以启用xp_cmdshell: EXEC master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE EXEC master.dbo.sp_configure 'xp_cmdshell', 1 RECONFIGURE 权限,哪个帐户xp_cmdshell正在运行? xp_cmdshell 'whoami' 创建一个新文件夹,您将在其中保存文件,并将对该文件夹的完全访问权限授予步骤 2 的用户。 我建议您首先尝试使用几个表,TOP为光标选择添加一个条件,以验证此脚本在您的服务器中运行良好。 select TOP 3 TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME from INFORMATION_SCHEMA.Tables where TABLE_TYPE = 'BASE TABLE'; 基本上,脚本从 中获取表列表INFORMATION_SCHEMA,并为列表中的每个元素执行 BCP 实用程序。 XML 文件将被命名为:DATABASE_SCHEMA_TABLE.XML 这是完整的脚本,在运行它之前,<...>根据您的系统配置替换包含的值: use <your_database> go declare @ServerInstance nvarchar(50), @Database sysname, @Schema sysname, @Table sysname, @RootFolder nvarchar(165), @BcpParams nvarchar(100), @cmdBCP nvarchar(500), @FQI varchar(600), @FileName varchar(600), @retExec int; set @ServerInstance = '<server\instance>'; set @BcpParams = '-t -T -w'; set @RootFolder = '<folder_name>'; declare curXml cursor fast_forward for select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME from INFORMATION_SCHEMA.Tables where TABLE_TYPE = 'BASE TABLE'; open curXml; fetch next from curXml into @Database, @Schema, @Table while @@FETCH_STATUS = 0 begin set @FQI = @Database + '.' + @Schema + '.' + @Table; set @FileName = @RootFolder + @Database + '_' + @Schema + '_' + @Table + '.xml'; select @cmdBCP = ' bcp "SELECT * FROM ' + @FQI + ' row FOR XML AUTO, ROOT(''' + @Table + '''), elements"' + ' queryout "' + @FileName + '" ' + @BcpParams + ' -S ' + @ServerInstance; print @cmdBCP; EXEC @retExec = xp_cmdshell @cmdBCP; if @retExec <> 0 begin close curXml; deallocate curXml; raiserror('BCP Error', 16, 1); end fetch next from curXml into @Database, @Schema, @Table; end close curXml; deallocate curXml;
可以使用 BCP 实用程序来完成这项工作。
先决条件:
您需要配置您的服务器,以启用
xp_cmdshell
:权限,哪个帐户
xp_cmdshell
正在运行?创建一个新文件夹,您将在其中保存文件,并将对该文件夹的完全访问权限授予步骤 2 的用户。
我建议您首先尝试使用几个表,
TOP
为光标选择添加一个条件,以验证此脚本在您的服务器中运行良好。基本上,脚本从 中获取表列表
INFORMATION_SCHEMA
,并为列表中的每个元素执行 BCP 实用程序。XML 文件将被命名为:
DATABASE_SCHEMA_TABLE.XML
这是完整的脚本,在运行它之前,
<...>
根据您的系统配置替换包含的值: