2011-11-11 40 views
0

我只是想通過使用Microsoft.Jet.Oledb Provider 4.0和Vb.net找出一個從文本文件導入訪問數據庫的記錄導入程序。這似乎很容易,但我的問題是不同的。在文本文件中,記錄不是分隔的。我是新手,所以對我來說太難了。請給出一些提示來解決這個問題。如何從Access數據庫中的文本文件(未定界)導入記錄?

Format of the text file: 
Field Name & Size 
Date[Date,ShortDate]FirstName[20]LastName[20]Sex[1]Age[2] 
Records 
02062011john……………..little………………M15 
… 
… 
… 

我可以把分隔符編程,而使用流閱讀器閱讀的文本文件中,隨後簡單地導入整個文件中的DB。任何建議

回答

0

它是不是空間分隔?你是否對文本文件有任何限制,例如從第一個字符到第100個字符是第一個名字等等?如果是的話,你可以根據這些限制來分解文本。

+0

我已經給出了字段大小。它像 名字(大小在字符20),姓氏(大小在字符20), 性別(大小在字符1),年齡(大小在字符2) – MOB

0

一種選擇是使用使用TextFieldParser類:我曾經在這個例子中StringReader

http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx

Imports Microsoft.VisualBasic.FileIO 

Private Sub ReadFixedWidthText() 
    Dim theString As String = "John    Little    M15" + vbCrLf + "Jane    Doe     F30" 

    Using rdr As New StringReader(theString) 
     Using parser As New TextFieldParser(rdr) 
      parser.TextFieldType = FieldType.FixedWidth 
      parser.FieldWidths = New Integer() {20, 20, 1, 2} 
      parser.TrimWhiteSpace = True 

      While Not parser.EndOfData 
       Dim fields() As String = parser.ReadFields() 

       For i As Integer = 0 To fields.Length - 1 
        Console.WriteLine("Field {0}: {1}", i, fields(i)) 
       Next 
      End While 
     End Using 
    End Using 
End Sub 

,但你可以很容易地使用一個StreamReader或者僅使用文件名中使用TextFieldParser構造函數。

或者您可以使用StreamReader和String.Substring方法的組合來獲取單個字段。

+0

非常感謝。你的代碼對我來說就像黑暗中的光。一旦我完成,我會在這裏發佈我的代碼。如果出現任何問題,我希望我能再次獲得幫助。 – MOB

相關問題