如何从带有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。
答案 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进行操作的人可能会有用。