Как перемещаться по строкам таблицы sql с использованием индекса в Java

#java #mysql #sql #database #jdbc

#java #mysql #sql #База данных #jdbc

Вопрос:

У меня есть две базы данных, и я хочу перенести данные из таблиц DB A в таблицы DB B. Все таблицы из обеих БД имеют одинаковый синтаксис. У меня есть этот метод, который принимает имя аргумента таблицы. Первый цикл for будет перемещаться по столбцам, и мне нужен другой цикл for или что-то еще, что перемещает строки этого конкретного столбца. Этот переключатель извлекает определенный тип данных из столбца таблицы и сохраняет его в поле, а после того, как я использую это поле для вставки значения в том же месте в DB B. Пожалуйста, какое-нибудь предложение? Я позволяю своему мусорному коду ниже:

 public void getAndInsertData(String nameOfTable) {

    try {

        Class.forName("com.mysql.jdbc.Driver");

        Connection con1 = DriverManager.getConnection(urlDB1, user1, password1);
        Statement s1 = con1.createStatement();

        Connection con2 = DriverManager.getConnection(urlDB2, user2, password2);
        Statement s2 = con2.createStatement();

        ResultSet rs1 = s1.executeQuery("SELECT * FROM "   nameOfTable);

        ResultSetMetaData rsmd1 = rs1.getMetaData();
        int columnCount = rsmd1.getColumnCount();

        for (int column = 1; column <= columnCount; column  ) {

            String columnName = rsmd1.getColumnName(column);
            int columnType = rsmd1.getColumnType(column);

            // for (int row = 1; row <= nrRows; row  ) {

            switch (columnType) {

            case 4:
                int integerValue = rs1.getInt(row);
                String integerQuery = "insert into "   nameOfTable   " ("   columnName   ") VALUES("   integerValue
                          ");";
                s2.executeUpdate(integerQuery);
                s2.close();

                break;
            case 12:
                String varcharValue = rs1.getString(row);
                String varcharQuery = "insert into "   nameOfTable   " ("   columnName   ") VALUES("   varcharValue
                          ");";
                s2.executeUpdate(varcharQuery);
                s2.close();

            default:
                System.out.println("Default");
                break;

            }
        }

        // }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        System.out.println("Transfer done...");
    }

}
  

Комментарии:

1. мне кажется, что вам, вероятно, лучше использовать sql dump.

2. Вам нужно вставить всю строку, а не вставлять строку в (столбец X строка). И если вы собираетесь что-то делать с columnType , то для удобства чтения я рекомендую использовать java.Types константы вместо использования магических чисел.

3. Я понимаю, не могли бы вы дать мне, пожалуйста, пример кода для того, как вставить туда всю строку, пожалуйста…