Analytics

2010年5月21日 星期五

[VB.NET]使用 array[]配合Split方式組字串 讀取csv檔案進行資料匯入處理(Use array [] with the Split Mode group carried out a string read csv file data import process)


問題
使用 array[]配合Split方式組字串 讀取csv檔案進行資料匯入處理



解決方法
//取得執行位置
Dim Parent_LogPath As String
Parent_LogPath = 
    System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).ToString

//取得執行位置底下的.csv檔
Dim sr As StreamReader = 
    New StreamReader(Parent_LogPath & "\data\" &"test0520.csv")

Dim _str1 As String = ""
Dim _str2 As String = ""
Dim _str3 As String = ""

//將讀出的資料以,分割成陣列
Dim Ary As Array = Split(sr.ReadToEnd(), ",")
//取得陣列筆數
Dim _arycount As Integer
_arycount = Ary.Length - 1

//宣告用於取得目前位置
Dim _arypoint As Integer

//宣告用於取得筆數
Dim excutesub As Integer = 1

//以for迴圈 從第3筆以後開始取值,一次取3筆
For _arypoint = 3 To _arycount Step 3
    _str1 = _str1 & Ary(_arypoint) & ","
    _str2 = _str2 & Ary(_arypoint + 1) & ","
    _str3 = _str3 & Ary(_arypoint + 2) & ","
    excutesub = excutesub + 1

    //1千筆執行一次,或讀到最後一筆執行一次
    If (excutesub = 1000 Or (_arycount - 2) = _arypoint) Then

        _str1 = _str1.Substring(0, _str1.Length - 1)
        _str2 = _str2.Substring(0, _str2.Length - 1)
        _str3 = _str3.Substring(0, _str3.Length - 1)
        ToWriteLog(_str1, _str2, _str3)

        //不是最後一筆資料時,休息3分鐘
        If (_arycount - 2) == _arypoint Then

        //調用Imports System.Threading
        //跑一次後休息3分鐘,1秒=1000
        Thread.Sleep(180000)
    End If

End If

Next

沒有留言:

熱門文章