0

sproc からデータを取得し、各列をファイルに書き込みます。私が引っ張っている列の 1 つは、最大 4096 文字とハード キャリッジ リターンを許可するメモ フィールドです。タブとリターンを削除するようにクエリを更新しましたが、うまくいくようです。クエリ結果をファイルにエクスポートすると、メモ列がすべて 1 行になります。ただし、ストリームライターを使用してデータをファイルに書き込むと、データが複数の行に分割されます。ここで何か助けていただければ幸いです。

C# コード:

    StreamWriter sw = new StreamWriter("C:\\Temp\\Test.txt");
    DataSet ds = GetData(); //call sproc, return data
    foreach(DataRow dr in ds) {
       sw.WriteLine(dr["Column1"] + "|" + dr["MemoColumn"] + "|" + dr["Column3"]);
    }

SQL クエリ:

    SELECT replace(replace(replace(isnull(MEMOCOLUMN, ''), CHAR(13), ' '), CHAR(10), ''), CHAR(9), '')
    FROM TABLE1
4

1 に答える 1

0

以下は機能するはずです。タイプミスがあるかもしれませんが、プロセスは機能するはずです。

    using (StreamWriter sw = new StreamWriter("C:\\Temp\\Test.txt")) 
    {
     DataSet ds = GetData(); //call sproc, return data
     foreach(DataRow dr in ds.Rows) 
     {
       var column = string.IsNullOrEmpty((dr["MemoColumn"].ToString()) ? string.Empty : 
                    dr["MemoColumn"].ToString().Replace(Environment.NewLine, string.Empty);

       sw.WriteLine("{0}|{1}|{2}", dr["Column1"], column, dr["Column3"]);
     }
    }
于 2013-05-21T15:25:46.000 に答える