需要学习如何使用 SQLCMD 从 SAP B1 导出查询
Posted
技术标签:
【中文标题】需要学习如何使用 SQLCMD 从 SAP B1 导出查询【英文标题】:Need to learn how to use SQLCMD to export a query from SAP B1 【发布时间】:2014-01-28 12:57:30 【问题描述】:我在工作中使用 SAP B1,并希望以批处理文件的形式导出 CSV 文件,以便我可以安排每 15 分钟导出一次以上传到网站。
这是我目前拥有的:
SQLCMD -S SERVER-VMSQL -d SBO_COMPANYNAME -U sa -P adminpassword -Q "SELECT ItemCode, FrgnName, OnHand-IsCommited FROM OITM" -s "," -o "\\server-address\users\rick\TestBat.csv" -h-1 -s"," -W -w 999
这给了我一个带有列的 CSV 导出:
项目代码 项目名称 现有数量减去销售订单数量我需要详细说明这个查询以放入一些 WHERE 子句 - 例如 WHERE:
U_Category = 'Toys'(其中 U_Category 是用户定义的字段) Qrygroup2 = 'Y'以上所有字段都在 OITM 表中。
另外 - 如何使用 SQLCMD 查询连接表? 我需要能够加入 OITW 表才能在 WHERE 子句中指定 T1.[WhsCode] = '01.主要'。
任何帮助将不胜感激!
问候 瑞克
【问题讨论】:
【参考方案1】:没有什么可以阻止您在提供给 SQLCMD 的查询中使用 WHERE
和 JOIN
子句。它们只是常规的 SQL 查询。
例如,您提供的查询已修改为包含您指定的限制:
SELECT OITM.ItemCode, OITM.FrgnName, OITM.OnHand-OITM.IsCommited
FROM OITM
INNER JOIN OITW
ON OITW.ItemCode = OITM.ItemCode
WHERE OITM.U_Category = 'Toys'
AND OITM.Qrygroup2 = 'Y'
AND OITW.WhsCode = '01. Main'
您只需将此查询提供给 SQLCMD,就像您在 OP 中处理查询一样:
SQLCMD -S SERVER-VMSQL -d SBO_COMPANYNAME -U sa -P adminpassword -Q "SELECT OITM.ItemCode, OITM.FrgnName, OITM.OnHand-OITM.IsCommited FROM OITM INNER JOIN OITW ON OITW.ItemCode = OITM.ItemCode WHERE OITM.U_Category = 'Toys' AND OITM.Qrygroup2 = 'Y' AND OITW.WhsCode = '01. Main'" -s "," -o "\\server-address\users\rick\TestBat.csv" -h-1 -s"," -W -w 999
【讨论】:
【参考方案2】:你能澄清一下你想要做的更多吗? 我已经编写了 VB.NET 代码并制作了批处理文件,以使用 Windows 任务调度程序每 x 分钟执行一次该代码。
您提到了 OITM 表,但还需要考虑 ITM1 表,我发现在同一个查询中加入这两个表通常可以提供我需要的一切(就数据而言)以应用正确的 where 子句进行验证。
再次,很抱歉未能完全理解您的问题,但如果您能详细说明该问题,我很乐意尽我所能提供帮助。
卡尔。
【讨论】:
嗨,Cal,很抱歉,花了这么长时间才知道。基本上我想做的就是从我的 SAP B1 SQL 数据库中导出一个包含上述信息的 CSV 文件。真正的问题是获取特定仓库的现有数量和承诺数量。以上是关于需要学习如何使用 SQLCMD 从 SAP B1 导出查询的主要内容,如果未能解决你的问题,请参考以下文章