2016-11-16 6 views
-2

.controlファイルには、特定のドキュメントを特定の宛先にファックスするために使用される特定の構造が含まれています。ここで SQLサーバーに特定の構造の〜2,000個のフラットファイルを作成する必要があります

はサンプルです:

;Sender Information 
#SENDER_NAME LA Medical Care 
#SENDER_EMAIL [email protected] 
#SENDER_BUSINESS_FAX_NUMBER 213-555-4321 
;RANDLE, JULIUS's Information 
#RECIPIENT 
#RECIP_NAME RANDLE, JULIUS 
#DESTINATION 1-323-555-6789 
#ATTACHMENT Report_Randle1.pdf 

すべてのフラット・ファイルの場合、送信者情報が同じになりますが、受信者の情報は、動的にする必要があるものです。 RECIP_NAME、DESTINATION、およびATTACHMENTパラメータを指定できるテーブルがあります。どのようにこのクエリを開始するためのアイデア?ありがとうございました。

+0

したがって、 'table'のレシピの詳細と同じ送信者情報を持つtsqlを使用して複数の.controlファイルを作成しようとしていますか?これは、各RECIP行が別々のファイルを作成することを意味しますか? – Searching

+0

@Searchingはい、各Recipは個別のファイルを作成します – jaguin

答えて

0

これはMessagesウィンドウに印刷するのに役立ちます。選択した区切り文字に基づいて分割する簡単なプログラムを作成する必要があります。

必要に応じて内容を出力するSQL。あなたは、複数のファイルにファイルに保存された出力を分割する

SET NOCOUNT ON 

DECLARE @senderInfo NVARCHAR(500) = ';Sender Information 
#SENDER_NAME LA Medical Care 
#SENDER_EMAIL LA [email protected] 
#SENDER_BUSINESS_FAX_NUMBER 213-555-4321' 


DECLARE @RecpHeader NVARCHAR(255) 
DECLARE @RecpName NVARCHAR(255) 
DECLARE @RecpDestination NVARCHAR(255) 
DECLARE @RecpAttachment NVARCHAR(255) 
DECLARE @Cmd AS VARCHAR(2500) 
DECLARE @CombinedControl NVARCHAR(2500) 
DECLARE @counter AS INT = 1; 
DECLARE @NewLine AS NVARCHAR(10) = CHAR(13) 

DECLARE CurOne CURSOR LOCAL 
FOR 
--Replace this with your table 
SELECT TOP 10 db.collation_name 
    ,db.state_desc 
    ,db.recovery_model_desc 
FROM sys.databases db 
ORDER BY db.NAME 

OPEN CurOne 

FETCH NEXT 
FROM CurOne 
INTO @RecpName 
    ,@RecpDestination 
    ,@RecpAttachment 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @CombinedControl = '' 
    SET @CombinedControl += @senderInfo + @NewLine + ';' + @RecpName + 'Information' + @NewLine; 
    SET @CombinedControl += '#RECIPIENT' + @NewLine; 
    SET @CombinedControl += '#RECIP_NAME ' + @RecpName + @NewLine; 
    SET @CombinedControl += '#DESTINATION ' + @RecpDestination + @NewLine; 
    SET @CombinedControl += '#ATTACHMENT ' + @RecpAttachment + @NewLine; 
    SET @CombinedControl += '---------------' --Delimiter to be used for splitting files 

    PRINT @CombinedControl;--Print to Message box 


    FETCH NEXT 
    FROM CurOne 
    INTO @RecpName 
     ,@RecpDestination 
     ,@RecpAttachment 
END 

CLOSE CurOne 

DEALLOCATE CurOne 

のC#をファイルにメッセージ出力をコピーする必要があります。それは1人のオフだと私はSQLを使用してファイルを作成しようとしたことがありません。..

var filePath = @"C:\Newfolder\SQLOutput.txt"; 
StreamReader sr = new StreamReader(filePath); 
string line = ""; 
int count = 0; 
while (sr.Peek() != -1) 
{ 
    line += sr.ReadLine(); 
    if (line.Contains("---------------")) 
    { 
    line = line.Replace("---------------",""); 
    File.AppendAllText(@"C:\Newfolder\"+count +".control", line); 
    count++; 
    line = ""; 
    } 
} 

LINQPadを選びました。これがあなたが始めるのを助けることを望みます。ご質問がある場合はお知らせください。

関連する問題