【问题标题】:Powershell truncating SQL Query OutputPowershell 截断 SQL 查询输出
【发布时间】:2020-03-04 22:53:27
【问题描述】:

我正在从 powershell 命令运行以下查询,不幸的是,该命令会在结果字符串的末尾截断或添加点。我已经调整了powershell的屏幕缓冲区大小,即右键单击powershell属性>布局>屏幕缓冲区大小>宽度和高度设置为9999(最大值)。似乎输出仅限于 powershell 屏幕缓冲区大小,我似乎无法解决这个问题。请提供任何帮助。

Invoke-Sqlcmd -ServerInstance myrds.com -Database mydb -Username dbuser -Password passord -maxcharlength 80000 -Query "SELECT CAST(BINARYCOL AS VARCHAR(MAX)) FROM OLTP_TABLE WHERE ID=123123 AND COMPANYID=123" | Out-File -FilePath "C:\Users\USER\Documents\ps_scripts\res3.txt"

【问题讨论】:

  • 如果你想将查询结果输出到文件中,为什么不使用bcp呢?这旨在将命令的输出保存到文件中。
  • 假设select datalength(binarycol) from oltp_table where id=123123 and companyid=123 返回的数字大于9999 是否安全?
  • @AlwaysLearning - 是的,二进制列总是 > 9999,这就是我似乎被固定的地方。
  • @Larnu - 啊,没想到,现在就试试,谢谢。
  • 如果这确实是由于屏幕大小而截断的情况,那么您可以将数据通过管道传输到Format-List。但是,如果您要输出属性中的项目集合,则默认 shell 在使用 ... 截断之前限制为 4 个项目。要解决此问题,您需要更改 $formatenumerationlimit = -1(无限)或其他适当的数字。

标签: sql-server powershell


【解决方案1】:

感谢所有回复的人。我在下面制定了一条 bcp 行来获取 从 varbinary 到字符串的非截断结果。

bcp "SELECT CAST(BINARYCOL AS VARCHAR(MAX)) FROM OLTP_TABLE WHERE ID=123123 AND COMPANYID=123" 
queryout "C:\Users\USER\Documents\ps_scripts\res.txt" -c -S myserver.db.com  -U admin -P password

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多