在VB里怎么把有分隔符的文本快速导入数据库?先有文本文件a.txt,内容由逗号分隔:
3,21900209,0921900208,,1,,,86561,,;
3,21900223,0921900764,,1,,,86561,,;
3,21900653,0921900345,,1,,,86561,,;
……………………现在想导入到access数据库中,通过分隔符来作为各个字段的分割,一行一条记录。
文本文件的字段个数都是一样的。如果有困难的话,导入到数据库中时一行作为一条记录,不进行字段分割。请各位高手们帮帮忙,先谢谢大家了!!!!!!!!!!!!!!!
3,21900209,0921900208,,1,,,86561,,;
3,21900223,0921900764,,1,,,86561,,;
3,21900653,0921900345,,1,,,86561,,;
……………………现在想导入到access数据库中,通过分隔符来作为各个字段的分割,一行一条记录。
文本文件的字段个数都是一样的。如果有困难的话,导入到数据库中时一行作为一条记录,不进行字段分割。请各位高手们帮帮忙,先谢谢大家了!!!!!!!!!!!!!!!
2.一条一条readline然后根据分隔符split后写入access,不过这个速度并不算很慢
3.readall然后根据行分隔符分隔,在根据字段分隔符分隔后写入,估计能比上述2快一倍以上速度
2.在VB中引用excel类库
3.定义一个excel对象,打开那个csv文件,并另存为aa.xls文件
4.引用ADO,定义一个ADO对象,将aa.xls文件作为数据源,用SQL语句将数据导入access数据库文件中Function exportExcelToAccess(ByVal sSheetName As String, _
ByVal sExcelPath As String, ByVal sAccessTable As String, ByVal sAccessDBPath As String)Dim Cn As ADODB.Connection
Set Cn = New ADODB.Connection
Cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & sExcelPath & ";Extended Properties = Excel 8.0;"
Cn.OpenCall Cn.Execute("Select * into [;database=" & sAccessDBPath & "]." & _
sAccessTable & " FROM [" & sSheetName & "$]")End Function
Set Excel_App = CreateObject("Excel.Application")Excel_App.Workbooks.Open App.Path & "\1.csv"
Excel_App.Visible = FalseSet Excel_Sheet = Excel_App.ActiveSheet
Excel_Sheet.SaveAs "1.xls"然后调用函数:
Call exportExcelToAccess("1", App.Path & "\1.xls", "temp", App.Path & "\a.mdb")当执行到:
Call Cn.Execute("Select * into [;database=" & sAccessDBPath & "]." & sAccessTable & " FROM [" & sSheetName & "$]")会报“实时错误-2147217865(80040e37),Microsoft Jet数据库引擎找不到对象1$。请确定对象是伐存在,并正确地写出它的名称和路径。”
第二、调用Excel后,退出后Excel进程仍然在的,怎么彻底退出啊?第三、执行到Excel_App.SaveWorkspace "1.xls"时会报1.xls文件已存在,是否替换?
此时查看当前目录并没有1.xls
//Excel_App.quit
set excel_app= nothing
dim Cn as connection
Set Cn = New Connection
Cn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\db1.mdb"
Cn.Open
cn.execute "insert into 表 select * from [Text;HDR=no;DATABASE=C:\].[a#txt]"
具体参考:
http://community.csdn.net/Expert/topic/3631/3631161.xml?temp=7.169741E-02
如果使用录制宏的方法与一行行读,应当时间上差不了太多,还是一行行读吧。