2016-07-14 12 views
0

をエクスポートしていない、とは二つの問題があります。CsvWriteは、私は、SQL ServerのテーブルからデータをエクスポートするCsvWriterを使用しています小さなテーブル

  1. テーブルが小さい、すなわち、いくつかを持っているが(空白ファイル)

  2. テーブルがエクスポートをトリガするのに十分な行を持っている場合、CsvWriterは行を切り捨てます(行が1行と5行をテストした)。私のテストでは、30行のテーブルをエクスポートするときに21行、50行のテーブルをエクスポートするときに44行が得られました(最後の行は両方とも不完全です)。データをエクスポートするC#のコードに

    DECLARE @cnt INT = 0; 
    DECLARE @rows INT = 1; /* I tested 5, 30 and 50 */ 
    
    WHILE @cnt < @rows 
    BEGIN 
        INSERT INTO csvtest(id, a, b) VALUES(NEWID(), @cnt, 'a very very1 very2 very3 very4 long random string'); 
        SET @cnt = @cnt + 1; 
    END; 
    

    テストデータをロードする

SQL Serverコード(https://joshclose.github.io/CsvHelper/でのコードの多かれ少なかれコピー)

// open a database connection 
SqlConnection con = new SqlConnection(cs); 
con.Open(); 

string sqlstring = "SELECT * FROM csvTest"; 
SqlCommand cmd = new SqlCommand(sqlstring, con); 
SqlDataReader dr = cmd.ExecuteReader(); 

var csv = new CsvWriter(new StreamWriter("c:\\tmp\\csvtest_1row.csv")); 

while (dr.Read()) 
{ 
    for (var i = 0; i < dr.FieldCount; i++) 
    { 
      csv.WriteField(dr[i]); 
    } 
    csv.NextRecord(); 
} 
con.Close(); 

マイCsvHelperのバージョンは2.15.0.2です。

2つのノート:

  1. 私は線でコード行をデバッグし、データがデータベースから正しく読み込まれた確認することができます。実際には、私はCSVオブジェクトを覗いて、そこにデータがあるようです。ちょうど何とか彼らはファイルに正しく書かれていませんでした。

  2. 私のコードは、テーブルをエクスポートするための一般的なものです。

誰でも私が間違っていたことを教えてもらえますか?

ご協力いただきありがとうございます。

答えて

0

StreamWriterを明示的にまたは "using {...}"で閉じる必要があります。それ以外の場合は、バッファをフラッシュしないので、ファイルの末尾が失われます。

+0

ありがとうございました。それは私の問題を解決します。 – james800

関連する問題