【问题标题】:read text file line by line and insert/update values in table逐行读取文本文件并在表中插入/更新值
【发布时间】:2010-06-07 18:43:38
【问题描述】:

我正在探索DoCmd.TransferText 是否会做我需要的选项,但似乎不会。如果数据不存在,我需要插入数据,如果存在则更新它

我打算像这样逐行读取文本文件:

Dim intFile As Integer
Dim strLine As String

intFile = FreeFile()
Open myFile For Input As #intFile
Line Input #intFile, strLine
Close #intFile

我猜每一行都会是一个记录。它可能会以逗号分隔,并且某些字段将具有" 文本限定符,因为在字段本身内我将使用逗号

我的问题是我如何将具有double quotes 有时作为文本限定符的逗号分隔文本文件读入可访问的表中?

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    我一直在关注您的相关问题,但不确定您在哪里遇到了麻烦。您似乎正在尝试通过此文本文件导入来完成两件事:

    1. 导入文本文件
    2. 根据导入的数据在表中追加或更新记录

    也许将这些步骤作为 2 个单独的操作来处理会更有效率,而不是尝试将它们组合到一个操作中。

    我以为您已经完成了第 1 步。如果是这样,请将文本导入单独的表 tblImport,然后使用该表来驱动对主表的更改。如果您担心由于重复导入然后删除 tblImport 中的记录而导致数据库膨胀,您可以使 tblImport 链接到外部数据库......以便将膨胀隔离到那个数据库。

    如果您需要第 2 步的更详细帮助,我认为您必须告诉我们如何识别主表中不存在哪些导入记录,以及如何匹配导入记录和主记录以进行更新。也许您可以删除在 tblImport 中有对应项的现有主记录,然后将所有 tblImport 附加到您的主表中。

    【讨论】:

    • 顺便说一句,我确实需要 #2 方面的帮助,我想我会问的
    • 您还可以通过在 SQL SELECT 的 FROM 中使用 IN 'mytextfile.txt' 语法来避免导入(或者,就此而言,UPDATE 或 INSERT)。
    【解决方案2】:

    我在这里假设您的文本文件格式正确/分隔良好。因此,请尝试录制宏,然后使用导入向导。 [导入向导可以通过命令行激活,并通过函数调用将所有必要的值传递给它。] 然后将宏生成的代码复制/移动到您的方法中,提供您喜欢的任何变量(这是我过去使用过的方法)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      相关资源
      最近更新 更多