- - PR -
MySQLのデータをCSVにする処理がだんだん遅く。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-30 17:21
みなさんレスありがとうございました。 読み出し部分を次のように変更するだけで スピードが格段に速くなりました 項目の両端に(”)をつけるのと(,)をつけるために 1項目あたり4行になってしまうのを どうにか1行にできないかと考え中です。 ------------------------------------------------------- Dim sbD As New System.Text.StringBuilder While oRd_m.Read sbD.Append("""") sbD.Append(oRd_m.GetString(0)) sbD.Append("""") sbD.Append(",") sbD.Append("""") sbD.Append(oRd_m.GetString(1)) sbD.Append("""") sbD.Append(",") 以下、省略。 | ||||||||
|
投稿日時: 2006-06-30 17:26
sbD.AppendFormat("""{0}"",", oRd_m.GetString(0))
| ||||||||
|
投稿日時: 2006-06-30 17:30
まさか、列数分を記述していたりします? ループ処理にすれば、もっとスッキリするかも。 | ||||||||
|
投稿日時: 2006-06-30 18:45
バッファリングされるんですね、そういえば昔調べたことがあるような... burton999さん、なちゃさん ご指摘本当にありがとうございます。(汗 | ||||||||
|
投稿日時: 2006-06-30 19:18
2桁目以降は "," がいるから、、、
って時は、とりあえず全部 "," をつける。 最後に String.SubString(1) で、“2文字目以降取り出し”。 | ||||||||
|
投稿日時: 2006-06-30 19:45
最初の 1 つはループ外、2 つ目からは前に、カンマを付けるかな。 sbD.Append(",""").Append(oRd_m.GetString(i)).Append("""") _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-06-30 20:45
ライブラリだけでなくOSもファイルキャッシュを持ってますから、開きっぱなしのファイルに追記するだけなら、あまり余分なこと考えないで素直なコードを書いた方が速いです。 | ||||||||
|
投稿日時: 2006-07-01 10:28
その都度出力するのが良いと、前にもburton999さんが仰っています。 この方法も検討してみませんか?^^; (読み出し部分を変更って書いてあるので、てっきり読み出す処理を変更したら何故かスピードは速くなったと書いてあるのかと思ってしまいました(^^A) #というか、読み出し部分って言わないっすよぉ〜 #文字列の連結方法とか、文字列の処理部分を、って言って下さいよぉ〜 [ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-07-01 14:06 ] |