【问题标题】:How to map excel sheet columns to columns in database?如何将excel工作表列映射到数据库中的列?
【发布时间】:2012-02-20 09:10:08
【问题描述】:

我需要读取一个excel文件并将数据从excel表上传到数据库。

excel表格将包含用户的名字,姓氏,电子邮件,年龄,加入日期,国家等信息。

我也会在数据库中有类似的用户表。

我只需要从 excel 表中读取每一行并插入到表中。

但为此我需要知道 excel 中的哪一列将进入 db 表中的哪一列。

我打算将表中的列名(即用户 java bean 的属性名)静态映射到 excel 表中的相应索引。

例如lastName 映射到 Excel 工作表中的索引 2。

如果这是正确的方法,请帮助我?

最好的方法是什么?

【问题讨论】:

  • 您可能应该指定数据库/语言(尽管我们可以假设它是 Java)。也就是说,我认为您可能会在这里找到解决方案:vogella.de/articles/JavaExcel/article.html - 您可以调整它以读取每一行并重新组织这些数据,以便使用 JDBC/Hibernate/whatever 插入到您的数据库中
  • 另外,您可以使用输入的第一行作为标签,并让应用程序在第一次迭代时为您枚举这些标头值。这意味着您不必遵守“lastName maps to index 2”约定,只要您将列命名为“lastName”,因为您可以将字符串/标签与电子表格中的索引/列相关联。可能有一种更清洁的方法来执行此操作,但它应该可以工作并且比您当前的解决方案提供更多的灵活性。如果您想要正确的答案,请发布上述问题的答案。
  • @Aaron Newton。感谢你的回答。我将使用 java 和 oracle
  • @AaronNewton 创建 Excel 工作表不在我的控制范围内。列可以有任何标题。
  • 如果电子表格之间的列标题不一致,那么使用列索引可能是一个好方法。就将其放入数据库和分离业务逻辑/应用程序/解耦的良好做法而言,您可以尝试使用 Hibernate roseindia.net/hibernate/firstexample.shtml javabeat.net/tips/81-batch-insert-in-hibernate.html

标签: java database excel


【解决方案1】:

没关系。您还可以将顶行作为标题(如果您可以控制创建 Excel 工作表)来验证字段。这样做非常简单:

  1. 使用Apache POI 读取 Excel 表格。
  2. 使用JDBC batch insert添加。

【讨论】:

  • 创建 Excel 工作表不在我的控制范围内。列可以有任何标题
  • 是的,那么您将不得不依赖索引,并且可以进行最少的验证,例如出于健全目的的字段类型检查。
【解决方案2】:

请按照以下步骤从excel中读取并插入数据库。

http://poi.apache.org/spreadsheet/index.html

1.其简单的API由Apache提供。 请注意。请确保文件名和选项卡名称是唯一的。 2. 也更容易从csv文件中读取,以便插入到数据库正常的控制文件中,得到oracle足够的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多