0
我想將文本文件加載到Access 2007表中。我知道你可以逐行讀取文件,然後在每行之外創建一條記錄。我試圖看看是否可以用INSERT INTO來完成,而不是循環遍歷所有文本行。我的文本文件不是字符分隔,而是固定的列寬。例如:VB2005導入固定寬度的文本文件到Access2007表...幾乎?
Date Speed Weight CarID Fuel
1120 200 10000 T230 200
1112 215 11000 F3AE 160
例子中的數據以提高可讀性空間,但在現實中的數據,像這樣
112020010000T230200
111221511000F3AE160
反正團聚在一起。我試圖
Dim sImportFolder As String = "C:\MyData"
Dim sSource As String = "C:\data.accdb"
Dim sImportFile As String = "week.txt"
Dim AccessConn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sSource & ";Persist Security Info=True;Jet OLEDB:Database Password=blah")
AccessConn.Open() 'open the connection to the database
Dim AccessCommand As New System.Data.OleDb.OleDbCommand("INSERT INTO [tblData] ([PtDate], [PtSpeed], [PtWt], [PtCar], [PtFuel]) SELECT F1, F2, F3, F4, F5 FROM [Text;DATABASE=" & sImportFolder & ";].[" & sImportFile & "]")
AccessCommand.Connection = AccessConn
AccessCommand.ExecuteNonQuery()
AccessConn.Close()
我不能圖瞭解如何告訴命令數據的結構。我知道你可以使用模式文件,但必須通過代碼完成這一切。
AGP
我很困惑這一切。只要您定義列寬,Access/Jet/ACE讀取固定寬度的文件就沒有問題。這可以使用Access內的導入嚮導來完成,然後可以在外部Access的代碼中使用導入規範(和/或schema.ini文件)。 – 2011-05-07 20:58:53
好吧,我陷入了困境。但我真的很想在不依賴內部Access規範或schema.ini文件的情況下實現它。也許不能做到這一點,在這種情況下,我可能別無選擇。 – sinDizzy 2011-05-08 01:10:40
我想不出有什麼辦法可以做到,除非直接打開文件並通過。但是,你仍然需要知道列邊界在什麼地方做出來,所以我不明白這種方法會如何優於所提出的替代方案。 – 2011-05-12 00:52:46