使用JAVA将Oracle表(s)数据转换为INSERT语句

时间:2010-01-22 15:32:04

标签: java oracle

如何从带有JAVA的oracle表中获取sql插件? 它有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 个答案:

答案 0 :(得分:1)

您有插入语句有多重要?在Oracle数据库之间传输数据的常规方法是使用DataPump实用程序。这附带一个PL / SQL API,可以通过编程方式进行操作。我在another recent thread中发布了一组示例代码。

答案 1 :(得分:1)

使用Toad for Oracle。您可以将查询保存为插入语句,电子表格,CSV ...以了解您能想到的任何内容。

答案 2 :(得分:1)

我也会使用Toad,但不确定它是否免费 如果确实需要在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();
}

* 缺少错误处理,类型处理(假设所有数据都是字符串),...

答案 3 :(得分:0)

我遇到了这个问题,寻找一个纯java实现来生成Oracle表的INSERT语句。我发现this piece of code对于想要在没有任何工具的情况下使用Java和JDBC进行操作的人可能会有用。