sql-server - 使用带有 where 条件的 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:\Temp\dbstockandsalereport.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:\Temp\PMMan-120.xml" -S -T -w -r -t';
exec xp_cmdshell @cmd1;
解决方案
最好创建一个存储过程 (SP) 并将整个SELECT
语句放在那里。之后,只需在 bcp 中调用该存储过程。
此外。通过这种方式,您始终可以自行测试 SP 并确保它符合预期。
所以它将如下所示:
bcp "EXEC yourStoredProcedure;" ...
推荐阅读
- java - 如果不为空,则流式传输并获取第一个对象
- firebase - 用于将 DotNet Core 输出部署到 Firebase 的 Docker 映像
- tsql - Json_query 检查哪些行在其 json 列表中具有特殊值
- python - 使用 python 调用函数给出未定义的错误
- python - 使用 NBA 统计数据在 Pandas 中创建三双列
- android - Android 在拖动时为 Fragment 设置动画并调整其大小
- php - 在上传文件的代码中找不到文件索引
- c# - 无法将 gameObject 数组的所有元素输出到统一控制台
- r - 如何在 R 中使用宏变量
- python - 有人可以举一个“operator.index()”的例子吗?