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