SQLServerCSV导出?我找到了这个答案SQLServerAgentjobusingxp_cmdshell-exportresultstotabdelimitedfile?这对我来说很好,除了我需要为sql查询提供一个日期参数。日期参数是通过另一个SQL查询填充的。考虑使用PowerShell。有没有人用过这个方案,愿意分享一下脚本+经验?我可以用C#编写一个控制台应用程序(或者在我弄清楚如何做之后通过powershell调用的类)。就在最简单、最凌乱的前进之后。顺便说一句:我上次使用xp_cmdshell时遇到了挫折感。上次我不得不教系统管理员如何发送电子邮件+也通过电子邮件执行此操作以解决他们在不同时区的锁定设置。结果我内心有些犹豫;-)。值得庆幸的是,我在这种情况下获得了自由支配权。你能试试吗:如果你想把它作为一个存储过程,你可以手动或以编程方式传递日期:CREATEPROCEDUREbcp_test_with_date_parameter@paramDateDATETIMEASBEGINDECLARE@bcpCmdvarchar(2000)SET@bcpCmd='bcp"SELECT*FROMdbname.schema.tablename'SET@bcpCmd=@bcpCmd+'WHERECONVERT(VARCHAR,datecolumn,101)='''+CONVERT(VARCHAR,@paramDate,101)+''''SET@bcpCmd=@bcpCmd+'ORDERBYcolumnnameofchoice"queryout"'SET@bcpCmd=@bcpCmd+'"C:tblNameData.txt"-T-c'EXECmaster..xp_cmdshell@bcpCmdEND但是如果你只想从另一个表中获取日期,你可以使用这个:声明@bcpCmdvarchar(2000)声明@dateHolderDATETIMESELECT@dateHolder=CONVERT(VARCHAR,datecolumn,101)FROMdateparametersourcetableWHERESET@bcpCmd='bcp"SELECT*FROMdbname.schema.tablename'SET@bcpCmd=@bcpCmd+'WHERECONVERT(VARCHAR,datecolumn,101)='''+@dateHolder+''''SET@bcpCmd=@bcpCmd+'ORDERBYcolumnnameofchoice"queryout"'SET@bcpCmd=@bcpCmd+'"C:output.txt"-T-c'EXECmaster..xp_cmdshell@bcpCmd在上面这也可以放在存储过程中,这实际上取决于您想要它的方式。我建议在担心SQLAgent如何首先生成CSV之前,您可以在SQLAgent中安排Powershell脚本。这是我测试过的一些代码,它使用来自另一个查询的日期参数从SQL查询生成CSV文件:"|%{$_.OrderDate}Invoke-Sqlcmd-ServerInstance"Win7bootsql1"-DatabaseAdventureWorks-Query"select*fromSales.SalesOrderHeaderwhereOrderDate这应该在SQLAgent中工作,就像在Powershell控制台中一样。你需要一个Powershell作业步骤设置。注意,如果你从与主查询相同的服务器实例中获取日期参数,则可以将查询合并为一个:内容,如果它对你有用并且你需要了解更多有关C#的学习教程,我希望你会多多关注---》select*fromSales.SalesOrderHeaderwhereOrderDate本文采集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
