Bash脚本导出SQL Server查询结果至CSV为空的问题排查
解决mssql-cli导出CSV为空的问题
针对你遇到的脚本能连接SQL Server但生成的CSV为空的问题,可从以下几个方向排查修复:
修正输出格式参数
部分mssql-cli版本不支持短选项-o指定输出格式,需改用长选项--output-format csv。同时建议直接将命令输出重定向到文件,避免用变量捕获大结果导致的内容丢失:mssql-cli -U "$username" -P "$password" -S "$serverName" -d "$database" -Q "$tsql" --output-format csv > /var/www/html/api/csv/userconf.csv禁用分页功能
mssql-cli默认启用分页机制,当结果行数较多时可能需要交互才能输出全部内容,添加--no-pager参数强制输出所有结果:mssql-cli --no-pager -U "$username" -P "$password" -S "$serverName" -d "$database" -Q "$tsql" --output-format csv > /var/www/html/api/csv/userconf.csv捕获stderr排查问题
若查询执行过程中有错误但未被捕获,可能导致输出为空。将stderr合并到stdout写入文件,方便查看错误信息:mssql-cli -U "$username" -P "$password" -S "$serverName" -d "$database" -Q "$tsql" --output-format csv > /var/www/html/api/csv/userconf.csv 2>&1手动验证查询有效性
在终端直接执行查询命令,确认SQL语句本身能返回结果:mssql-cli -U "$username" -P "$password" -S "$serverName" -d "$database" -Q "$tsql"如果手动执行也无结果,需检查查询条件(比如
DATEADD(HOUR,-3,GETDATE())的时间范围)或表权限是否存在问题。
内容的提问来源于stack exchange,提问作者R_life_R
相关产品推荐
相关产品推荐

