次の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 Community for Senior Living-LTC APPL02、201406、Applewood Estates ARBO02、201406、Arbors Care Center
ARIS01、201406、Cherry HillのAristaCare
。 。 。(139行が影響を受けました)
列ヘッダーの下の破線を取り除く方法はありますか:-------、--------しかし、列ヘッダーは保持しますか?
また、下部の行数に使用されている2行を削除する方法はありますか?
Parm -h-1を使用してみましたが、列ヘッダーと破線が取り除かれました。
ソリューション:
1)行数( "(139行に影響あり)")を削除するには、SET NOCOUNT ON
ステートメントを使用する必要があります。 ref を参照してください。
2)列ヘッダーを削除するには、-h
パラメータと値-1
を使用する必要があります。 ref(セクション書式設定オプション) を参照してください。
例:
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.
または
C:\Users\sqlservr.exe>sqlcmd -S(local)\SQL2012 -d Test -E -h -1 -s, -W -Q "set nocount on; select * from dbo.Account" -o "d:\export2.txt"
一番上の答えを持つ男は、破線を削除する方法に答えませんでした。これは私の素晴らしいソリューションです。
申し訳ありませんが、4年9か月遅れています。
以下を使用してください。
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
私の場合、うまくいきました:
タイプTemp.txt | findstr/v-> DestFile.txt
行数を削除するには:以下をSQLステートメントに追加します。
SET NOCOUNT ON;
ハイフン行を削除するには、実行が成功したときに次のことを試してください。
findstr /v /c:"---" c:\dataExport.csv > c:\finalExport.csv
すべての列が3文字を超え、データにその文字列が含まれていないため「---」を使用しますが、「-、-」を使用してリスクをさらに削減したり、代わりにデータに基づく区切り文字を使用したりすることもできます。 「、」。
さらに、テーブル内のすべてのレコードをクエリする場合は、次のようにコーディングできます。
上記のクエリを変数%query%に割り当てます。コマンドは次のようになります。
SQLCMD -h -1 -W -E -S %sql_server% -d %sql_dabase% -Q %query% -s"," -o output_file.csv
1.最初にヘッダー列を使用してファイルを作成します
2. -h-1オプションを使用して、sqlcmd出力をファイルに追加します。
echo acctnum、rptmonth、facilname> c:\ dataExport.csv sqlcmd -S -d MyDb -E -s、-h-1 -W -Q "select account、rptmonth、thename from theTable" >> c:\ dataExport.csv