使用带条件的bcp将SQL导出为XML

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用带条件的bcp将SQL导出为XML相关的知识,希望对你有一定的参考价值。

我尝试使用此代码将数据导出到XML,通常可以正常工作:

declare @cmd nvarchar(255);
select @cmd = 'bcp "SELECT * from [db].[dbo].[TW_StockReport](0,25,26,4,29,30,19,31) row For XML auto, XMLSCHEMA, root(''node'')" ' +
    'queryout "D:Tempdbstockandsalereport.xml" -S -T -w -r -t';

exec xp_cmdshell @cmd;

但是当我尝试添加WHERE条件时,它不再起作用:

declare @cmd1 nvarchar(1155);

select @cmd1 = 'bcp "SELECT INVENTLOCATIONID, AgeOfItem AS ''ProductYear'', ISNULL(SUM(Qty), 0) AS ''Unit'', COUNT(c.ItemID) AS ''ProductType''
FROM [db].[dbo].[TW_ItemsNonMovement] c 
LEFT JOIN [db].[dbo].[TempInventTable] d ON c.ITEMID = d.ITEMID collate Thai_CI_AS
WHERE d.TW_DEPARTMENTID = ''PMMan'' AND DateDiff <= 120 AND Qty > 0 
GROUP BY INVENTLOCATIONID, AgeOfItem ORDER BY INVENTLOCATIONID, AgeOfItem row FOR XML AUTO, XMLSCHEMA, ROOT(''node'') ;"' + 
'queryout "D:TempPMMan-120.xml" -S -T -w -r -t';

exec xp_cmdshell @cmd1;
答案

最好创建一个存储过程(SP),然后将整个SELECT语句放在此处。之后,只需在bcp中调用该存储过程即可。

另外。这样,您就可以始终自行测试SP并确保其达到了预期的效果。

因此将如下所示:

bcp "EXEC yourStoredProcedure;" ...

以上是关于使用带条件的bcp将SQL导出为XML的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server通过BCP进行大批量数据导入导出

SQL Server 将数据导出为XML和Json

SQL Server批量数据导出导入BCP使用

sqlserver的BCP导入导出

在 SQL 查询中使用 BCP

sql server数据表导出xml文件