2014-12-30 2 views
0

Обычно для синхронизации таблицы в сети я могу написать простой sql-запрос и запустить его для синхронизации таблиц, но что, если исходная база данных отличается (может быть db2, mssql, mysql, oracle - откуда я могу получить данные в таблице назначения).Нужно синхронизировать две таблицы из разных баз данных в java

Как мне начать писать код в java для достижения этого ?. Я знаю, что я могу создать dblinks в java для извлечения данных из внешней сетевой базы данных, но dblinks работает только с базой данных того же типа. Я не в состоянии понять реализацию в моей голове. Пожалуйста, укажите мне в правильном направлении, так что я могу предпринять шаги ребенка и научиться так же, как я новичок в Java

ответ

2

Вы можете сделать это с помощью простого JDBC. Пример кода, не проверен:

void migrate() throws SQLException { 
     Connection connA = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:orcl"); 
     Connection connB = DriverManager.getConnection("jdbc:mysql://192.168.1.33/test"); 

     PreparedStatement stmA = connA.prepareStatement("select * from product where 1=1"); 
     PreparedStatement stmB = connB.prepareStatement("insert into prod values(?,?,?,?)"); 

     ResultSet rs = stmA.executeQuery(); 
     while (rs.next()) { 
      for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) { 
       stmB.setObject(i + 1, rs.getObject(i + 1)); 
      } 
      stmB.executeUpdate(); 
     } 

     connA.close(); 
     connB.close(); 
    } 
+0

Hi Peter Я уже пробовал что-то похожее на то, что вы ответили. Есть ли оптимизированный способ сделать это? например, используя API (пример: oracle api) для реализации того же самого? Пожалуйста помоги!! – kittu

+0

Вы «новичок в Java» и запрашиваете оптимизацию. Какие у вас проблемы, память, скорость? – PeterMmm

+0

Я хочу сказать, вместо того, чтобы внедрять код с использованием обычного SQL-запроса, мне дали понять, что oracle уведомит об изменениях/обновлениях в таблицах и на основе которых я должен разработать код. Я предполагал, что это должно быть связано с oracle api и jdbc, и к моему удивлению я нашел эту ссылку в google, которая рассказывает об услуге уведомления. Пожалуйста, направляйте меня, если я иду по верному пути? [Ссылка] http://docs.oracle.com/cd/E11882_01/java.112/e16548/dbchgnf.htm#JJDBC28816 – kittu

0

миграция данные Если вы хотите перенести данные из одной базы данных в другую базу данных различных типов,

Предположим, у вас есть A и B две разные базы данных, вам необходимо экспортировать данные из базы данных A в формате XML, имя таблицы - XML родительский узел (создайте структуру согласно вашей базе данных).

Затем разобрать, что XML's и создавать объекты каждой таблицы присутствует в A, после чего использовать любой XML парсер, который будет разбирать ваш XML, используя спящий режим экономии() апи поместить каждый объект в другой базе данных управления, если таблицы имеет отношения в них, то сначала вставьте данные основной таблицы, затем вставьте данные дочерних элементов.

При таком подходе вам не нужно каждый раз зависеть от базы данных назначения (B), с помощью спящего режима вы можете легко изменить свою базу данных.

Смежные вопросы