如何使用vb6将文本文件导入访问数据库

时间:2011-02-28 01:36:48

标签: ms-access vb6 text-files

在我的txt文件中,有3列用空格分隔。在每列中,数据长度是相同的。就像下面一样 -

OQ3900097 9383722662 2
OQ3900098 9383722663 2
OQ3900099 9383722664 2

在VB6中,我们可以直接将这样的文本文件导入Access 2000数据库(不用空格替换成逗号)吗?

2 个答案:

答案 0 :(得分:2)

我之前直接在Access中使用获取外部数据并设置链接表来完成此操作。

否则,使用ODBC文本驱动程序或直接解析它并通过数据连接导入是相当容易的

答案 1 :(得分:2)

这非常简单,并且没有理由进入桌面文本ODBC驱动程序,因为Jet 4.0具有可以执行此任务的Text Installable ISAM。

示例:将文本附加到现有表,将文本导入为新表。

Private Sub cmdAppend_Click()
    Dim lngRows As Long

    conDB.Execute _
          "INSERT INTO ExistingTable SELECT * " _
        & "FROM [Import.txt] IN '" & App.Path & "' 'TEXT;'", _
          lngRows, _
          adCmdText Or adExecuteNoRecords

    MsgBox CStr(lngRows) & " rows appended to ExistingTable."
End Sub

Private Sub cmdImport_Click()
    Dim lngRows As Long

    conDB.Execute _
          "SELECT * INTO NewTable " _
        & "FROM [Import.txt] IN '" & App.Path & "' 'TEXT;'", _
          lngRows, _
          adCmdText Or adExecuteNoRecords
    MsgBox CStr(lngRows) & " rows imported as NewTable."
End Sub

使这项工作的关键是将一个名为Schema.ini 的文件放在与文本文件相同的文件夹中(在这种情况下,我只是使用App.Path文件夹示范):

[Import.txt]
Format = Delimited( )
TextDelimiter = none
ColNameHeader = False
MaxScanRows = 0
Col1="Code" Text Width 9
Col2="Sequence" Text Width 10
Col3="Type" Integer Width 1

上面我编写了字段名称和数据类型,在实际情况下,它们将匹配数据库中的字段名称和数据类型。 请务必注意括号中的单个空格,这将是使用的分隔符。

如果要导入的同一文件夹中有多个文本文件,只需根据需要将其他INI部分添加到Schema.ini。

如果需要,您的程序甚至可以动态地将这样的Schema.ini写入文件夹,插入必要的文本文件名,字段列表及其名称,类型,大小等。