0

我正在制作一个程序,我将从 txt 文件中读取数据并将它们存储在 mysql 的表中。在我的程序开始时,将使用它包含的所有字段(ID、名称、文本、价格、日期、升)创建表。代码如上所示:

private static String getCreateTable1(Connection con, String tablename) {

try {
    Class.forName("com.mysql.jdbc.Driver");
    Statement stmt = con.createStatement();
    String createtable = "CREATE TABLE " + tablename
            + " ( ID INT, name VARCHAR(255), text VARCHAR(255), price INT , date DATE, litres DECIMAL (20,8) )";
    System.out.println("Create a new table in the database");
    stmt.executeUpdate(createtable);
} catch (Exception e) {
    System.out.println(((SQLException) e).getSQLState());
    System.out.println(e.getMessage());
    e.printStackTrace();
}

return null;
}

我必须解决的问题是文本文件中的数据如图所示:在此处输入图像描述

ID 在第三行,NAME 在第五行,然后有一行数据不会存储在某个地方,一行之后有四列数据。第一个是“价格”之后的“文本”,接下来是“日期”,最后是“升”

我怎样才能让它读取例如第三行并仅获取 ID 的值并将其存储在 ID 字段中?有人可以帮我吗?

4

2 回答 2

0

首先,您的数据最好采用 XML 格式,然后使用 XML 解析器,您可以很好地读取数据并将它们转换为您的对象。

我猜你甚至还没有创建一个对象来加载你的数据,所以让我帮你解决这个问题:

public class MyDataObject {

    int id;
    String name;
    DataTable table;

    private class DataTable {
        String col1;
        int col2;
        Date date;
        int col3;
        int col4;
        DataTable(...) {
            ...
        }
    }
}

现在阅读您的文本文件后(猜想您也不知道,所以这是您的代码库的另一种实用方法:)

static String readFile(String path, Charset encoding) 
  throws IOException 
{
  byte[] encoded = Files.readAllBytes(Paths.get(path));
  return encoding.decode(ByteBuffer.wrap(encoded)).toString();
}
// Usage:
// String content = readFile("test.txt", Charset.defaultCharset());

您需要在代码库中使用实用方法将 XML 字符串解析为文档:

public static Document loadXMLFromString(String xml) throws Exception
{
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    InputSource is = new InputSource(new StringReader(xml));
    return builder.parse(is);
}

剩下的最后一件事是将您的 XML 数据映射到您的数据对象 (MyDataObject)。

为此,请参阅此答案

您可能想要编译对象的 List/ArrayList,然后您可以遍历它们并轻松访问数据。

于 2013-06-17T13:36:08.283 回答
0

您可以在 SQL 命令中直接从 CSV 文件导入数据。见http://dev.mysql.com/doc/refman/5.1/en/load-data.html

您也可以从 Java 中的 CSV 读取它,然后将其存储到数据库中,请参阅http://opencsv.sourceforge.net/

于 2013-06-17T14:26:41.907 回答