импортировать базу данных из txt файла в mysql с java - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь импортировать данные из моей базы данных в текстовый файл, и после этого я хочу снова экспортировать их из этого текстового файла Я написал этот код

private void importdata() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
        } catch (Exception ex) {
            Tools.msg(ex.getMessage());
        }
        String csvFilePath = "D://t1.txt";
        try {
            String sql = "select ID,address,name from t1";
            stmt = con.createStatement();
            rs = stmt.executeQuery(sql);
            FileOutputStream file = new FileOutputStream(csvFilePath);
            OutputStreamWriter fileWriter = new OutputStreamWriter(file, StandardCharsets.UTF_8);
            fileWriter.write("ID,Name,address");
            while (rs.next()) {
                int ID = rs.getInt("id");
                String Name = rs.getString("name");
                String address = rs.getString("address");
                String line;
                line = String.format("%s,%s,%s",
                        ID,address,Name);
                fileWriter.write("\n");
                fileWriter.write(line);
            }
            stmt.close();
            fileWriter.close();

        } catch (SQLException | IOException ex) {
            Logger.getLogger(importandexport.class.getName()).log(Level.SEVERE, null, ex);
        }

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
            String sql = "delete from t1";
            stmt = con.createStatement();
            stmt.executeUpdate(sql);
            stmt.close();
        } catch (Exception ex) {
            Tools.msg(ex.getMessage());
        }
    }

    private void export() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone = UTC", "root", "");
        } catch (Exception ex) {
            Tools.msg(ex.getMessage());
        }        
        String sql = "LOAD DATA INFILE 'D://t1.txt' \n"
                + "INTO TABLE t1 \n"
                + "FIELDS TERMINATED BY ',' \n"
                + "LINES TERMINATED BY '\\n'\n"
                + " IGNORE 1 ROWS";
        try {
            stmt = con.createStatement();
            stmt.executeUpdate(sql);
            stmt.close();
        } catch (Exception ex) {
            Tools.msg(ex.getMessage());
        }
    }

этот код работает хорошо для меня, но теперь я хочу выбрать (ID, имя, адрес) и загрузить (ID, name, address) вместо (ID, address, name), но я не мог этого сделать, так как я могу это сделать?

1 Ответ

0 голосов
/ 14 июля 2020

Приятель, ваш вопрос довольно расплывчатый, и постарайтесь не размещать длинные коды в своем вопросе ... Попробуйте что-то самостоятельно и задайте вопросы, когда вы где-то застряли.

А что касается вашей проблемы, это может будь тем, чем хочешь заниматься:

                ...
                String line;
                line = String.format("%s,%s,%s",
                        ID,Name,address); //instead of ID,address,Name
                fileWriter.write("\n");
                fileWriter.write(line);
                ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...