Данные таблиц Oracle для операторов INSERT с помощью JAVA - PullRequest
1 голос
/ 22 января 2010

Как я могу получить вставки sql из таблицы оракула с JAVA? Есть ли для этого Oracle API?

Мне нужно сохранить его в файле, в файле результатов должны быть строки с примерами:

-- INSERTING into TEST
Insert into "TEST" ("CODE","FAMILY","SUB_FAMILY","SEVERITY","STATUS","ANOMALY_DATE","DESCRIPTION",
"COMMENTS","VALUE0","VALUE1","VALUE2","VALUE3","VALUE4","VALUE5","VALUE6","VALUE7","VALUE8",
"VALUE9") values (1,'family1','subFamily11','bad','initial',to_date('0005-11-21','DD/MM/RR'),'someDescription',
'someComment','someValue','someValue','someValue','uselessValue','uselessValue',null,null,null,null,null);

пример строки был создан с помощью инструмента экспорта от разработчика Oracle SQl

Thks.

Ответы [ 4 ]

1 голос
/ 22 января 2010

Использование Жаба для Oracle . Вы можете сохранить запрос как оператор вставки, электронную таблицу, CSV ... обо всем, что только можно придумать.

1 голос
/ 22 января 2010

Я бы тоже использовал Жабу, но не уверен, что это бесплатно.
Если вам действительно нужно сделать это в Java, вы должны использовать JDBC и метаданные набора результатов для создания ваших комментариев.
Вот пример, просто как идея - он НЕ полный *

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:oci:@DB_ID", "user", "password");
try {
  PreparedStatement stmt = conn.prepareStatement("SELECT * FROM MY_TABLE");
  StringBuilder command = new StringBuilder();
  ResultSet rset = stmt.executeQuery();
  ResultSetMetaData meta = rset.getMetaData();
  int columns = meta.getColumnCount();
  command.append("INSERT (");
  for (int i = 1; i <= columns; i++) {
    if (i > 1) {
      command.append(',');
    }
    command.append(meta.getColumnName(i));
  }
  command.append(") VALUES (");
  int head = command.length();
  while(rset.next()) {
    for (int i = 1; i <= columns; i++) {
      if (i > 1) {
        command.append(',');
      }
      String value = rset.getString(i);
      if (value != null) {
        command.append('\'');
        command.append(value);
        command.append('\'');
      } else {
        command.append("NULL");
      }
    }
    command.append(")");
    System.out.println(command.toString());
    command.setLength(head);
  }
} finally {
  conn.close();
}

* отсутствует обработка ошибок, обработка типов (предполагается, что все данные являются строками), ...

1 голос
/ 22 января 2010

Насколько важно, чтобы у вас было insert операторов? Обычным способом передачи данных между базами данных Oracle является использование утилиты DataPump. Это идет с API PL / SQL, которым можно манипулировать программно. Я разместил пример кода для этого в другой недавней ветке .

0 голосов
/ 24 октября 2016

Я сталкивался с этим вопросом в поисках чистой Java-реализации для генерации операторов INSERT таблицы Oracle.Я нашел этот фрагмент кода , который может быть полезен для тех, кто хочет сделать это, используя только Java с JDBC без какого-либо инструмента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...