从SQL Server查询结果中删除列标题

时间:2014-04-22 13:50:48

标签: sql-server sql-server-2008 powershell sqlcmd

我想从SQL Server查询输出中删除列标题。我做了搜索,但没有找到任何解决方案。我有一个查询,例如。

select cc.DepartmentID , cc.Name  from HumanResources.Department cc

当我运行此查询时,我得到这样的输出。

ID  Name
12  Document Control
1   Engineering
16  Executive
14  Facilities and Maintenance
10  Finance
9   Human Resources

我想从SQL Server的输出中删除ID和名称(列标题)。

我将通过脚本运行此查询以生成csv文件。

修改

当我通过脚本运行查询时,我将csv文件作为输出,它看起来像这样。

#TYPE System.Data.DataRow           
ID  Name    

更新:

我正在使用powershell脚本。

$Database = "temp"
$Server = "localhost"

$AttachmentPath = "output.csv"


# Connect to SQL and query data, extract data to SQL Adapter

$SqlQuery = "select cc.DepartmentID , cc.Name  from HumanResources.Department cc"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$nRecs = $SqlAdapter.Fill($DataSet)
$nRecs | Out-Null

#Populate Hash Table

$objTable = $DataSet.Tables[0]

#Export Hash Table to CSV File

$objTable | Export-CSV $AttachmentPath

我想从输出中删除列标题。

7 个答案:

答案 0 :(得分:10)

在SSMS下的工具/选项/查询结果/ SQL Server /结果文本中,有一个复选框,用于在结果集中包含列标题'。类似于网格的结果。

如果您通过powershell使用sqlcmd,则可以使用/ h-1禁用标题。

  

此设置对应于环境变量SQLCMDHEADERS。

     

提示与技巧

     

使用值-1指定不应包含标头   打印。如果提供-1,则之间必须没有空格   参数和设置,即-h-1。否则,SQLCMD会解释   它作为一个单独的选项而失败。

示例(从[TechNet]修改)1

sqlcmd -q /h-1 "SELECT * FROM AdventureWorks2012.Person.Person"

也适用于-h-1

答案 1 :(得分:4)

在查询窗口的管理工作室中右键单击并选择查询选项。在左侧的树中查找结果>文本,并在结果集选项中查看包括列标题。我认为Hamlet Hakobyan是对的,它是添加列标题的客户端。

答案 2 :(得分:2)

将最后一行$objTable | Export-CSV $AttachmentPath替换为

$objTable | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | out-file $AttachmentPath

答案 3 :(得分:0)

使用“另存为”选项不包括属性(列)名称。

答案 4 :(得分:0)

此方法正常工作,并且列标题不存在于输出文件中:

$workpath = "C:\myworkdir"
$InvSQLParams = @{
    ServerInstance = "SQL2016"
    Database       = "testdb"
    InputFile      = "$($workpath)\selectclause.sql"
}
Invoke-Sqlcmd @InvSQLParams | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | out-file "$($workpath)\result.csv"

答案 5 :(得分:-1)

在你的脚本中,管道(|)输出到“tail +3”命令。 这将跳过SQL的前两行输出。

答案 6 :(得分:-1)

连接数据库后设置此项 SET HEADING OFF