【问题标题】:data parsing from a file into java and then into a mysql database将文件中的数据解析为java,然后解析为mysql数据库
【发布时间】:2010-11-11 11:47:31
【问题描述】:

我有上述格式的 .Data 文件。我正在用 java 编写一个程序,它将从 .data 文件中获取值并将其放入缓冲区中。我的 java 程序通过 JDBC 连接到 Mysql(windows)。所以我需要从以上述格式给出的文件中读取值并将其放入缓冲区,如

Insert Into building values ("--", "---",----) 

通过这种方式,我存储这些值,jdbc 将填充 Mysql(windows) 上的数据库表。请告诉我最好的方法。

【问题讨论】:

    标签: java mysql jdbc


    【解决方案1】:

    查看this question 的答案以读取文件行并将它们分成块。我知道这个问题说的是 Groovy:但大多数答案都是 Java。然后插入您通过 JDBC 检索到的值。

    实际上,由于您的数据文件显然是 CSV,您也可以使用像 OpenCSV 这样的 CSV 库来读取值。

    【讨论】:

    • 文件为 .data 格式。虽然,它们用逗号分隔,但我无法将名称更改为 .csv 文件。请详细说明
    • 文件名是无关紧要的,但是CSV表示逗号分隔值,这里其实是这样的。
    • CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));在此,使用 .csv。但在我的文件中,它是 .data。我不应该改变它。
    • 文件名只是约定,仅此而已。这样做:CSVReader reader = new CSVReader(new FileReader("yourfile.data")); 它会起作用。
    • 当然。对于这个任务,我同意。我说的是更大的范围。我通过实践学习了 Java(之前曾编写过 PHP、PERL 和其他被破解的语言),我花了数年时间才意识到自己所犯的所有错误。如果你有时间(可能是在作业之后),请按照教程阅读 Joshua Bloch 的《Effective Java》。
    【解决方案2】:

    数据是 CSV 格式的,所以使用 CSV 库来解析文件,然后添加一些 JDBC 代码将其插入数据库。

    或者只是从 Java 中调用 MySQL CSV import command

    try {
        // Execute a command with arguments
        String command = "mysqlimport [options] db_name textfile1 [textfile2 ...]";
        Process child = Runtime.getRuntime().exec(command);
    
    } catch (IOException e) {
    }
    

    【讨论】:

    • +1 用于 MySQL CSV 导入命令(尽管我会跳过中间人并直接调用它,无需任何 Java)
    【解决方案3】:

    这是同一任务的第四个问题...如果您的数据文件的格式与您提供的示例中一样,那么您不必将行拆分为值:

    Source:   "AAH196","Austin","TX","Virginia Beach","VA"
    Target:   INSERT INTO BUILDING VALUES("AAH196","Austin","TX","Virginia Beach","VA");
          <=> "INSERT INTO BUILDING VALUES(" + Source + ");"
    

    只需从您的 csv 文件中取出一个完整的行并连接一个 SQL 表达式。

    see my answer to question 1 of 4 - 顺便说一句,如果 SQL INJECTION 是一个潜在问题,拆分一行值也不是解决方案)

    【讨论】:

      【解决方案4】:

      您可以使用 opencsv 将您的 csv 与 java bean 绑定。 http://opencsv.sourceforge.net/

      您可以使用 ORM 框架(如 Hibernate、Cayenne 或基于注释的 JPA)使这些 bean 持久化,并将您的字段轻松映射到表,而无需创建任何 sql 语句。

      【讨论】:

      • 对于介绍性编程作业来说有点重量级,不是吗?
      【解决方案5】:

      这对于 Groovy 来说是一个完美的工作。这是gist with a small skeleton script to build upon

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-27
        • 1970-01-01
        • 2023-03-23
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多