Java 如何从文本文件导入表中的值

Java 如何从文本文件导入表中的值,java,jdbc,Java,Jdbc,我正在制作一个程序,从txt文件中读取数据,并将它们存储在mysql的表中。在我的程序开始时,将创建包含所有字段的表(ID、名称、文本、价格、日期、升) 代码如上所示: private static String getCreateTable1(Connection con, String tablename) { try { Class.forName("com.mysql.jdbc.Driver"); Statement stmt = con.createStatement

我正在制作一个程序,从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在第三行,名称在第五行,然后有一行包含不会存储在某处的数据,一行之后有四列数据。第一个是“价格”后面的“文本”,第二个是“日期”,最后是“升”


例如,我如何使其读取第三行并仅获取ID的值并将其存储在ID字段中?有人能帮我吗?

首先,您的数据最好采用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(...) {
            ...
        }
    }
}
现在,在阅读文本文件之后(猜测您也不知道这一点,所以这里有另一个用于代码库的实用方法:)

您需要在代码库中使用实用程序方法将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)

为此,请参见


您可能需要编译对象的列表/阵列列表,然后可以在其中循环并轻松访问数据。

您可以在SQL命令中直接从CSV文件导入数据。看


您还可以从java中的CSV中读取数据,然后将其存储到数据库中,请参见

将日期存储为varchars??嗯,我不知道有哪个SQL引擎没有原生日期类型;这只是一张表格的样本。你是对的,但问题的目的不是这个。
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);
}