2016-06-21 7 views
0

私は以下の例を持っており、SQLでスクリプトを実行してデータを必要な形式で返そうとしています。 "Header"、 "Data"、 "Trailer"の部分についてはちょっとした助けが必要です。pipe del形式のデータを返す

H|Peter|Blum|2012/07/30|1 
D|11399011005434578|Jason|Smith|8002235091083|0126531988|199 Lever Road Centurion Gauteng 0067|23.45|Your next payment is due on 2012/09/02|2012/07/29|Active 
D|11399022005434578|Mike|Smith|8004235091083|0126531988|299 Lever Road Centurion Gauteng 0067|55.00|Your next payment is due on 2012/09/03|2012/06/29|Active 
D|11399033005434578|Peter|Smith|8052235091083|0126531988|399 Lever Road Centurion Gauteng 0067|77.99|Your next payment is due on 2012/09/04|2012/05/29|Active 
T|3 
+0

と?エラーが発生していますか?あなたの質問は何ですか? –

+0

どのような形式ですか?データベースは、フォーマットされたテキストではなく、データセットを返します。これはクエリの結果ですか?行ではなく1行のテキストを返す方法を尋ねていますか?あなたはどの言語を使っていますか?単にあなたの言語のクエリメカニズムを使ってデータを返し、あなたが望む任意の方法でフォーマットしてみませんか? –

+0

データとは何ですか?何を試しましたか? – Denn

答えて

0

例から、ファイルを作成しようとしていることがわかりました。 bcpユーティリティを使用してファイルを作成する必要があります。

次のようにあなたがそれに近づくような方法は次のとおりです。

CREATE TABLE ##FileData(ID INT IDENTITY, RowString VARCHAR(MAX)) 
INSERT INTO ##FileData 
SELECT 'H|Peter|Blum|2012/07/30|1' 

INSERT INTO ##FileData 
SELECT 'D|' + CONVERT(VARCHAR, Col1) + '|' + CONVERT(VARCHAR, Col2) + '|' + .... 
FROM MyTable 

/* Get record count */ 
DECLARE @RowCount = (SELECT COUNT(*) FROM #FileData) - 1 

INSERT INTO ##FileData 
SELECT 'T|' + CONVERT(VARCHAR, @RowCount) 

EXEC master..xp_cmdshell 
N'bcp "SELECT RowString FROM ##FileData" queryout C:\MyFile.txt -c -r\r\n -S[ServerName] -U[username] -P[password] ' 
0

あなたはUNION ALLとヘッダーとトレーラーを追加することができます。

SELECT {Query that generates Header}, 0 AS ord 
UNION ALL 
SELECT {Query that generates Data Rows}, 1 AS ord 
UNION ALL 
SELECT {Query that generates Trailer}, 2 AS ord 
ORDER BY ord ASC 
関連する問題