代码之家  ›  专栏  ›  技术社区  ›  Matt Ephraim

通常如何将数据从电子表格导入多个数据库列?

  •  6
  • Matt Ephraim  · 技术社区  · 17 年前

    不管出于什么原因,我有很多客户机都有存储在电子表格中的现有数据。通常每个电子表格中都有成百上千的项目,而要求客户通过网站手动输入这些项目(或者我自己也不可能以这种方式输入)是不可能的。通常,这些数据不会简单地将电子表格列映射到数据库列。那太容易了。通常,在进入数据库之前需要对数据进行操作(数据需要用逗号等分隔),或者需要将数据分散到多个表中。或者两者兼而有之。

    我问这个问题,不是因为我不知道有很多方法可以做到,而是因为我还没有找到一种不觉得需要做的工作比应该做的更多的方法。到目前为止,我已经采取了以下所有方法(可能还有更多我已经忘记的方法):

    • 使用Excel修改数据,这样导入就容易一点
    • 将整个电子表格导入到临时表中,然后使用SQL导入

    到目前为止,使用脚本似乎是最灵活的方式,但它仍然感觉有点笨拙。我必须完成这项任务,我甚至考虑为它写一点DSL,只是为了加快速度。

    4 回复  |  直到 17 年前
        1
  •  2
  •   Arthur Thomas    17 年前

    我会按照剧本去做。我假设您有重复的列,这些列必须匹配另一个表中的一行。我会进行合理的匹配,如果您遇到脚本无法处理的行并移动数据…那么记录它并让某人手动执行。

        2
  •  2
  •   Charlie Martin    17 年前

    当然,这些小细节会让你大吃一惊,但总的来说,我成功地将数据从Excel导出为CSV,然后使用rool或脚本读取数据,根据需要咀嚼数据,然后插入数据。根据我的环境的奇妙程度,这可以通过脚本语言的数据库接口来完成,包括将SQL INSERT语句写入脚本文件。

    有很好的CSV软件包可供选择 Python , Ruby Perl .

        3
  •  2
  •   Charles Graham    17 年前

    如果可以的话,你必须设定界限。您应该尝试为他们提供一个模板,以便他们使用预期的数据,其中包括文件类型(Excel、csv等)、列名、有效值等。您应该允许用于浏览文件并将其上载到页面/表单上的模板。

    他们做错了什么或需要改变什么。这可能包括让validation页面在datagrid中包含实际数据,并在确切的行/列上提供带有错误的红色标签。如果你使用办公自动化,你可以给他们确切的手机号码,但是办公室的个人信息助理是个麻烦事。

    接受验证后,您可以随意导入信息。我更喜欢把它放在一个暂存表中,并使用一个存储的进程来加载它,但那只是我自己。有些人更喜欢使用对象模型,但如果有大量数据,这可能会非常缓慢。

    如果您个人手动加载这些文件,并且必须进入并操作它们,我建议您找到它们之间的公共性,并制定一个遵循的标准。一旦你做到了这一点,你可以让用户自己做,或者你自己可以做得更快。

    如果这将是一种无法自动化的情况,那么您可能只需要有一个普通的暂存表,并使用sql来进行导入。您必须将数据加载到一个暂存表中,执行基本操作,然后将其加载到SQL所需的te暂存表中。

        4
  •  0
  •   Stephan Eggermont    17 年前

    为您的问题创建域模型。您将讨论单元格、列、行、数据库表、拆分字段、合并字段、从单元格到数据库列的映射,这些都是您需要的概念。此外,您可能需要范围(单元格)和图纸。

    简单视图只查看电子表格中的值,而不查看基础公式。将电子表格导出为制表符分隔的文本可以访问该文本。如果您需要访问公式,最好使用xml表示,xml电子表格或Office xml格式。

    推荐文章