2

特定の値を置き換える必要がある大きなcsvファイル(それぞれ1.5GB)がいくつかあります。私が現在使用している方法はひどく遅く、これをスピードアップする方法があるはずだとかなり確信していますが、私は自分が何をすべきかを知るのに十分な経験がありません。これは私の最初の投稿であり、関連するものを見つけるために検索しようとしましたが、何も見つかりませんでした。どんな助けでもいただければ幸いです。

私の他の考えは、ファイルをチャンクに分割して、すべてをメモリに読み込み、そこですべての置換を行ってから、統合ファイルに出力できるようにすることです。私はこれを試しましたが、実際には現在の方法よりも遅く見えました。

ありがとう!

    Sub Main()
    Dim fName As String = "2009.csv"
    Dim wrtFile As String = "2009.1.csv"
    Dim lRead
    Dim lwrite As String
    Dim strRead As New System.IO.StreamReader(fName)
    Dim strWrite As New System.IO.StreamWriter(wrtFile)
    Dim bulkWrite As String

    bulkWrite = ""
    Do While strRead.Peek <> -1
        lRead = Split(strRead.ReadLine(), ",")
        If lRead(9) = "5MM+" Then lRead(9) = "5000000"
        If lRead(9) = "1MM+" Then lRead(9) = "1000000"

        lwrite = ""
        For i = LBound(lRead) To UBound(lRead)
            lwrite = lwrite & lRead(i) & ","
        Next
        strWrite.WriteLine(lwrite)
     Loop

    strRead.Close()
    strWrite.Close()
End Sub
4

1 に答える 1

2

分割と結合を行っていますが、時間がかかる場合があります。

テキストの行を読んでみませんか。次に、「5MM+」と「1MM+」の出現箇所を適切な値に置き換えてから、行を書き込みます。

 Do While ...
    s = strRead.ReadLine();
    s = s.Replace("5MM+", "5000000")
    s = s.Replace("1MM+", "1000000")
    strWrite(s);
 Loop
于 2011-06-04T01:43:07.183 に答える