我最初创建了一组脚本,用于使用SQLCMD将动态查询系统的结果提取到CSV。但是,由于数据集中包含大量格式代码的大文本字段,CSV文件变得难以使用。然后,我转而使用SQLPS或PowerShell,它们在格式化输出文件方面做得很好。不幸的是,当从SSMS手动运行the文件时,我无法将提取的CSV文件保存下来。我可以将相同的输出代码粘贴到SQLPS中,使用PowerShell.exe或SQLPS.exe可以很好地工作。
我检查了提取文件夹上的文件权限,尝试了SQLPS和PowerShell的不同选项,并检查了Process中的执行情况,但我不知道为什么这不起作用。
SET @Cmd = 'sqlps
$FromDate = "' + @FromDate + '";
$ToDate = "' + @ToDate + '";
$IncidentTypeName = "' + @IncidentTypeName + '";
$DateField = "' + @DateField + '";
$QueryType = "' + @QueryType + '";
$PersonTypeID = "' + @PersonTypeID + '";
$var = "FromDate=$FromDate", "ToDate=$ToDate", "IncidentTypeName=$IncidentTypeName", "DateField=$DateField", "QueryType=$QueryType", "PersonTypeID=$PersonTypeID";
invoke-sqlcmd -ServerInstance ' +@Server+ ' -Database ' +@Database+ ' -Username '+@Login+' -Password '+@Password + ' -QueryTimeout 0 ' +
' -InputFile "'+@SqlScriptFolder+@InputFileType+'" -Variable $var | export-csv -Delimiter "," -NoTypeInformation -Path "'+@ExtractFolder+@OutputFile+'.csv"'
print @Cmd
EXEC master..xp_cmdshell @Cmd我的要求是提取一个标准的CSV文件,不幸的是,当我使用SQLCMD时,我试图利用我早先在项目中收集的大量T代码。它还需要是一个自动化的过程,这就是为什么我试图利用PowerShell或SQLPS。我在运行Windows 10的开发计算机上使用SQLServer2019。
对这个有什么想法吗?
发布于 2022-06-09 18:34:47
在对我疯狂的过程进行了大量的研究之后,我找到了一个解决方案,即,我肯定应该重写为一个PowerShell脚本(而不是使用xp_cmdshell)
使用一个(backslash)
SET @Cmd = REPLACE(REPLACE(@Cmd, NCHAR(13), N''), NCHAR(10), N' ');
)转义" (双引号),回车和换行符。
https://stackoverflow.com/questions/70779785
复制相似问题