日期:2014-05-16 浏览次数:20606 次
根据上一篇中的TableKind类型可以写相应的show table 语句。
| TableKind | 类型 | show语句 |
|---|---|---|
| T | Table | show table 表名; |
| V | View | show view 视图名; |
| M | Macro | show macro 名; |
| P | SQL Procedure | show procedure 名; |
| E | External Stored Procedure | show procedure 名; |
| D | JAR | |
| R | Table function | show function 名; |
| F | Standard function | show function 名; |
| 其他 |
下面是一段示例代码,代码实现使用show语句获取各种Table(Object)的DDL(Create语句等)以及对应的Drop语句:
/**
*
* @param TableName : The name of Production DB's table
* @param TableKind : The kind of table
* @return
* @throws SQLException
*/
private String showTable(String TableName, String TableKind)
throws SQLException {
String sqlCREATE = "";
PreparedStatement ps = null;
ResultSet rs = null;
String sql = null;
switch(TableKind) {
case "T":
sql = CommonConfig.sqlShowTable + "\"" + TableName + "\"";
this.sqlListDrop.add(CommonConfig.sqlDropTable +
"\"" + TableName + "\"");
break;
case "V":
sql = CommonConfig.sqlShowView + "\"" + TableName + "\"";
this.sqlListDrop.add(CommonConfig.sqlDropView +
"\"" + TableName + "\"");
break;
case "M":
sql = CommonConfig.sqlShowMacro + "\"" + TableName + "\"";
this.sqlListDrop.add(CommonConfig.sqlDropMacro +
"\"" + TableName + "\"");
break;
case "P":
case "E":
sql = CommonConfig.sqlShowProcedure + "\"" + TableName + "\"";
this.sqlListDrop.add(CommonConfig.sqlDropProcedure +
"\"" + TableName + "\"");
break;
case "D":
logger.info(" -- TableKind is D, SKIP. -- ");
break;
case "R":
case "F":
sql = CommonConfig.sqlShowFunction + "\"" + TableName + "\"";
this.sqlListDrop.add(CommonConfig.sqlDropFunction +
"\"" + TableName + "\"");
break;
default:
break;
}
logger.info(sql);
if(sql == null) return null;
ps = conn.prepareStatement(sql);
//logger.info(sql);
rs = ps.executeQuery();
while(rs.next()) {
// Be careful, replace = with +=
sqlCREATE += rs.getString(1);
}
// Remove the DB name in the CREATE statement
sqlCREATE = sqlCREATE.replace(DBConn.getDatabase() + ".", "");
sqlCREATE = sqlCREATE.replace(DBConn.getDatabase().toLowerCase() + ".", "");
sqlCREATE = sqlCREATE.replace(DBConn.getDatabase().toUpperCase() + ".", "");
sqlCREATE = sqlCREATE.replace("\"" + DBConn.getDatabase() + "\".", "");
sqlCREATE = sqlCREATE.replace("\"" + DBConn.getDatabase().toLowerCase() + "\".", "");
sqlCREATE = sqlCREATE.replace("\"" + DBConn.getDatabase().toUpperCase() + "\".", "");
rs.close();
ps.close();
return sqlCREATE;
}1. CommonConfig.sqlShowTable是字符串"show table ",其他类似。
2. 最值得注意的情况是
sqlCREATE += rs.getString(1);