在VB里怎么把有分隔符的文本快速导入数据库?先有文本文件a.txt,内容由逗号分隔:
3,21900209,0921900208,,1,,,86561,,;
3,21900223,0921900764,,1,,,86561,,;
3,21900653,0921900345,,1,,,86561,,;
……………………现在想导入到access数据库中,通过分隔符来作为各个字段的分割,一行一条记录。
文本文件的字段个数都是一样的。如果有困难的话,导入到数据库中时一行作为一条记录,不进行字段分割。请各位高手们帮帮忙,先谢谢大家了!!!!!!!!!!!!!!!

解决方案 »

  1.   

    1.在access下录制宏,从.txt/.csv格式文件导入到表,在vb里创建这个access对象并调用这个access的宏,这样不用一条一条读写,不过速度我没测试过
    2.一条一条readline然后根据分隔符split后写入access,不过这个速度并不算很慢
    3.readall然后根据行分隔符分隔,在根据字段分隔符分隔后写入,估计能比上述2快一倍以上速度
      

  2.   

    1.将文本文件改名,改成aa.csv
    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
      

  3.   

    jam021(jam) 的方法很不错的!!不过在打开 csv 并另存为 xls 时遇到了些问题:第一个问题:
    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
      

  4.   

    第二、调用Excel后,退出后Excel进程仍然在的,怎么彻底退出啊?
    //Excel_App.quit
      set  excel_app= nothing
      

  5.   

    '引用ado2.0
    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
      

  6.   

    jam021(jam)的方法有问题,注意楼主的记录行数要求,EXCEL可支持不了这么多
    如果使用录制宏的方法与一行行读,应当时间上差不了太多,还是一行行读吧。