web-dev-qa-db-ja.com

ヘッダーの下に破線がなく、行数のないファイルを生成する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 Community for Senior Living-LTC APPL02、201406、Applewood Estates ARBO02、201406、Arbors Care Center
ARIS01、201406、Cherry HillのAristaCare
。 。 。

(139行が影響を受けました)

列ヘッダーの下の破線を取り除く方法はありますか:-------、--------しかし、列ヘッダーは保持しますか?

また、下部の行数に使用されている2行を削除する方法はありますか?

Parm -h-1を使用してみましたが、列ヘッダーと破線が取り除かれました。

14
Lill Lansey

ソリューション:

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"
38
Bogdan Sahlean

一番上の答えを持つ男は、破線を削除する方法に答えませんでした。これは私の素晴らしいソリューションです。

  1. 最初に-h -1を含めると、破線とヘッダーの両方が削除されます
  2. 次に、selectステートメントの前に、PRINTステートメントで必要なヘッダー文字列を手動で挿入します。したがって、あなたの場合、PRINT 'acctnum、rptmonth、facilname' select .. * ... from ...

申し訳ありませんが、4年9か月遅れています。

8
JSkyS

以下を使用してください。

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 account、rptmonth、thename from theTable;]
4
Waleed A.K.

私の場合、うまくいきました:

タイプTemp.txt | findstr/v-> DestFile.txt

行数を削除するには:以下をSQLステートメントに追加します。

    SET NOCOUNT ON;

ハイフン行を削除するには、実行が成功したときに次のことを試してください。

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

すべての列が3文字を超え、データにその文字列が含まれていないため「---」を使用しますが、「-、-」を使用してリスクをさらに削減したり、代わりにデータに基づく区切り文字を使用したりすることもできます。 「、」。

1
Dan

さらに、テーブル内のすべてのレコードをクエリする場合は、次のようにコーディングできます。

  1. NOCOUNTをONに設定します。
  2. SELECT SUBSTRING((SELECT '、' + COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N '%table_name%' FOR XML PATH( ''))、2、9999);
  3. SELECT * FROM%table_name%

上記のクエリを変数%query%に割り当てます。コマンドは次のようになります。

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

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

0
Jim Evans