public static Set<String> getAllTables(Connection conn, String[] tables,
			String[] exFilters) throws Exception {
		Set<String> result = new HashSet<String>();
		Map<String, String> buf = new HashMap<String, String>();
		if (tables != null) {
			for (String t : tables) {
				result.add(t);
			}
		}
		String sql = "show tables;";
		ResultSet rs = conn.prepareStatement(sql).executeQuery();
		while(rs.next()){
			String tableName = rs.getString(1);
			buf.put(tableName, "");
		}
		if (exFilters != null) {
			for (String ex : exFilters) {
				Set<String> keys = buf.keySet();
				List<String> buffer = new ArrayList<String>();
				for (String key : keys) {
					if (key.contains(ex)) {
						buffer.add(key);
					}
				}
				for (String s : buffer) {
					buf.remove(s);
				}
			}
		}
		Set<String> keys = buf.keySet();
		result.addAll(keys);
		return result;
	}