Sqlcmd生成文件,标题下没有虚线,没有行计数

时间:2014-06-30 19:54:23

标签: sql-server-2005 sqlcmd

使用以下sqlcmd脚本:

sqlcmd -S . -d MyDb -E -s, -W -Q "select account,rptmonth, thename from theTable"  
> c:\dataExport.csv

我得到一个包含

的csv输出文件
  

acctnum,rptmonth,facilname

     

-------,--------,---------
  ALLE04,201406,Allendale老年人生活社区 - LTC APPL02,201406,Applewood Estates   ARBO02,201406,Arbor Care Centre
  ARIS01,201406,樱桃AristaCare   希尔
  。 。 。

     

(139行受影响)

有没有办法摆脱列标题下的虚线:-------,--------,但保留列标题?

还有一种方法可以摆脱底部用于行数的两条线?

我尝试使用parm -h-1但是除去了列标题以及虚线。

8 个答案:

答案 0 :(得分:26)

解决方案:

1)要删除行数("(受影响的139行)"),您应该使用SET NOCOUNT ON语句。请参阅ref

2)要删除列标题,您应使用值-h的{​​{1}}参数。请参阅ref (section Formatting Options)

示例:

-1

C:\Users\sqlservr.exe>sqlcmd -S(local)\SQL2012 -d Test -E -h -1 -s, -W -Q "set nocount on; select * from dbo.Account" > d:\export.txt. 

答案 1 :(得分:3)

使用以下内容;

sqlcmd -S . -d MyDb -E -s, -h-1 -W -Q "set nocount on;select 'account','rptmonth', 'thename';select account,rptmonth, thename from theTable"  
> c:\dataExport.csv
  • 删除标题-h-1
  • 删除行计数[set nocount on;]
  • 添加标题选择[select' account','rptmonth','thename';]
  • 添加您的选择[select table,rptmonth,thename from theTable;]

答案 2 :(得分:2)

在我的案例中效果很好:

输入Temp.txt | findstr / v - > DestFile.txt

答案 3 :(得分:2)

答案最高的那个人没有回答如何删除虚线。这是我很棒的解决方案。

  1. 首先包含-h -1,它同时删除了虚线和标题
  2. 然后在select语句之前,通过PRINT语句手动插入所需的标题字符串。因此,在您的情况下,PRINT'acctnum,rptmonth,facilname'选择.. * ...来自...

对不起,我迟到了4年9个月。

答案 4 :(得分:1)

删除行数: 将以下内容添加到SQL语句

    SET NOCOUNT ON;

要删除连字符行,请在成功执行后尝试以下操作:

    findstr /v /c:"---" c:\dataExport.csv > c:\finalExport.csv

我用" ---"因为我的所有列都超过3个字符而且我的数据中没有该字符串,但您也可以使用" - , - "根据您的数据代替","来进一步降低风险或任何分隔符。

答案 5 :(得分:0)

1.首先使用标题列

创建文件

2.使用选项-h-1

将sqlcmd输出应用于文件

echo acctnum,rptmonth,facilname> C:\ dataExport.csv sqlcmd -S。 -d MyDb -E -s,-h-1 -W -Q"从theTable"中选择帐户,rptmonth,thename >> C:\ dataExport.csv

答案 6 :(得分:0)

此外,如果要查询表中的所有记录,则可以编码为

  1. 开启NOCOUNT;
  2. SELECT SUBSTRING((SELECT','+ COLUMN_NAME FROM     INFORMATION_SCHEMA.COLUMNS TABLE_NAME = N'%table_name%'FOR XML     PATH('')),2,9999);
  3. 选择* FROM%table_name%

将上述查询分配给变量%query%。该命令将如下所示。

SQLCMD -h -1 -W -E -S %sql_server% -d %sql_dabase% -Q %query% -s"," -o output_file.csv

答案 7 :(得分:0)

我使用了另一种解决方案来解决删除标题下方的虚线的问题。

DECLARE @combinedString VARCHAR(MAX);

SELECT @combinedString = COALESCE(@combinedString + '|', '') + COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME  = 'YOUR_TABLE_NAME'

然后只用 选择语句上方Print @combinedString。 我使用了管道定界符。