- PR -

MySQLのデータをCSVにする処理がだんだん遅く。

投稿者投稿内容
バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 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(",")

以下、省略。

burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2006-06-30 17:26
sbD.AppendFormat("""{0}"",", oRd_m.GetString(0))
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2006-06-30 17:30
引用:

バニラミントさんの書き込み (2006-06-30 17:21) より:

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(",")

以下、省略。



まさか、列数分を記述していたりします?
ループ処理にすれば、もっとスッキリするかも。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-06-30 18:45
引用:

burton999さんの書き込み (2006-06-30 15:47) より:

Flushしないと一定のサイズになるまで書き込まないはずなので(IOが発生しない)、意識する必要はない気がします。(多分)


引用:

なちゃさんの書き込み (2006-06-30 17:04) より:

FileStreamは既定でバッファリングが有効なはずなので問題ないでしょう。
サイズが不足とかであれば、必要なサイズを指定すればよいです。


バッファリングされるんですね、そういえば昔調べたことがあるような...
burton999さん、なちゃさん ご指摘本当にありがとうございます。(汗
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-30 19:18
2桁目以降は "," がいるから、、、

って時は、とりあえず全部 "," をつける。
最後に String.SubString(1) で、“2文字目以降取り出し”。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-30 19:45
引用:

Jittaさんの書き込み (2006-06-30 19:18) より:

2桁目以降は "," がいるから、、、

って時は、とりあえず全部 "," をつける。
最後に String.SubString(1) で、“2文字目以降取り出し”。


最初の 1 つはループ外、2 つ目からは前に、カンマを付けるかな。
sbD.Append(",""").Append(oRd_m.GetString(i)).Append("""")

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-06-30 20:45
引用:

バッファリングされるんですね、そういえば昔調べたことがあるような...



ライブラリだけでなくOSもファイルキャッシュを持ってますから、開きっぱなしのファイルに追記するだけなら、あまり余分なこと考えないで素直なコードを書いた方が速いです。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-07-01 10:28
引用:

バニラミントさんの書き込み (2006-06-30 17:21) より:

みなさんレスありがとうございました。
読み出し部分を次のように変更するだけで
スピードが格段に速くなりました



その都度出力するのが良いと、前にもburton999さんが仰っています。
この方法も検討してみませんか?^^;
(読み出し部分を変更って書いてあるので、てっきり読み出す処理を変更したら何故かスピードは速くなったと書いてあるのかと思ってしまいました(^^A)

#というか、読み出し部分って言わないっすよぉ〜
#文字列の連結方法とか、文字列の処理部分を、って言って下さいよぉ〜

[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-07-01 14:06 ]

スキルアップ/キャリアアップ(JOB@IT)