使用JAVA插入语句的Oracle表数据

使用JAVA插入语句的Oracle表数据,java,oracle,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","V

如何使用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 developer的导出工具创建的


Thks.

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

使用。您可以将查询另存为插入语句、电子表格、CSV。。。关于你能想到的任何东西。

我也会用蟾蜍,但不确定它是否免费。
如果真的需要在Java中实现,则必须使用JDBC和结果集的元数据来创建推荐。
这里举一个例子,作为一个想法——它并不完整*

Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection conn=DriverManager.getConnection(“jdbc:oracle:oci:@DB_ID”、“user”、“password”);
试一试{
PreparedStatement stmt=conn.prepareStatement(“从我的表格中选择*);
StringBuilder命令=新建StringBuilder();
ResultSet rset=stmt.executeQuery();
ResultSetMetaData meta=rset.getMetaData();
int columns=meta.getColumnCount();
追加命令(“插入(”);
对于(int i=1;i 1){
append(',');
}
append(meta.getColumnName(i));
}
追加(“)值(”);
int head=command.length();
while(rset.next()){
对于(int i=1;i 1){
append(',');
}
字符串值=rset.getString(i);
if(值!=null){
command.append('\'');
追加命令(值);
command.append('\'');
}否则{
command.append(“NULL”);
}
}
命令。追加(“)”;
System.out.println(command.toString());
命令。设置长度(头);
}
}最后{
康涅狄格州关闭();
}

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

我在寻找纯java实现来生成Oracle表的INSERT语句时遇到了这个问题。我发现,对于那些只想使用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();
}