#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. Я понимаю, не могли бы вы дать мне, пожалуйста, пример кода для того, как вставить туда всю строку, пожалуйста…