SQL Server 2008 - use cmd to output with headers to .csv -
i have pretty simple question (and these typically ones spend of time tearing hair out about). using batch file execute .sql queries in same directory batch, , save results various .csv file.
here code:
@echo off rem check parameters present @if "%1"=="" goto error @if "%2"=="" goto error @if "%3"=="" goto error @if "%4"=="" goto error rem every *.sql file in folder "." , subfolders (/r), following: @for /r "." %%f in (*.sql) ( rem print command executed: @echo database : @sqlcmd -s %1 -u %2 -p %3 -d %4 -i -l60 -i "%%f" -o "%%f.output.csv" -h-1 -s"," -w 1000 -w rem execute command: @sqlcmd -s %1 -u %2 -p %3 -d %4 -i -l60 -i "%%f" -o "%%f.output.csv" -h-1 -s"," -w 1000 -w ) goto :eof :error @echo incorrect syntax : @echo extract.cmd [servername] [user id] [password] [databasename] @echo @pause goto :eof
as test, run following query:
select top(10) [name] sysobjects
which outputs:
sysrscols sysrowsets sysallocunits sysfiles1 syspriorities sysfgfrag sysphfg sysprufiles sysftinds sysowners (10 rows affected)
this works fine, except 2 things. firstly, need have column headers output well. remove "-h -1" parameter, gives:
name ---- sysrscols sysrowsets sysallocunits sysfiles1 syspriorities sysfgfrag sysphfg sysprufiles sysftinds sysowners (10 rows affected)
which great except fact don't want horizontal rule "------" between heading , first row of data.
also, don't want "(10 rows affected)" line output.
does know how achieve this?
thanks
karl
try this:
set nocount on; select [name] (select top(10) 2 sortby, [name] sysobjects union select 1, 'name' ) dt order [name]
output ssms:
name ---------------------------------------------- name sysallocunits sysfiles1 sysftinds syshobtcolumns syshobts sysowners sysprivs sysrowsetcolumns sysrowsets sysserefs
leave "-h -1" parameter , column headings removed, "name" row still appear in result set first.
Comments
Post a Comment