Oracle 和 Mysql 数据库表字段对比讲解
Oracle select * from user_tab_columns
Oracle可以通过User_tab_columns查询相关表结构信息
Mysql select * from information_schema.columns
Oracle可以通过information_schema.columns查询相关表结构信息
如果有多张表可将他们带条件查询where table_name in('表名1','表名2')查询最终结果用Excl保存起来
类似这张
接着java用POI写文件流
public Map getExclMap(String templateFilePath){ 文件templateFile =新文件(templateFilePath); HSSFWorkbook workBookOut = null; MaptabMap1 = new HashMap <>(); 尝试{ FileInputStream inputStream = new FileInputStream(templateFile); workBookOut = new HSSFWorkbook(inputStream); HSSFSheet sheetOut = workBookOut.getSheetAt(0); int rows = sheetOut.getLastRowNum(); //得到Excl最后一行下标 //第一次循环将表名作为关键值 for(int i = 0; i <= rows; i ++){ 字符串tabNameStr = sheetOut.getRow(i).getCell(1).getStringCellValue(); tabNameStr = tabNameStr.toUpperCase(); //防止大小写不一致 tabMap1.put(tabNameStr,new ArrayList()); } //第二次循环将字段放值 for(int i = 0; i <= rows; i ++){ 字符串tabNameStr = sheetOut.getRow(i).getCell(1).getStringCellValue(); tabNameStr = tabNameStr.toUpperCase();
String clumStr = sheetOut.getRow(i).getCell(2).getStringCellValue(); clumStr = clumStr.toUpperCase(); tabMap1.get(tabNameStr).add(clumStr); } } catch(Exception e){ e.printStackTrace(); } System.out.println(“templateFilePath = [”+ count +“]”); 返回tabMap1; }
比较方法
public static void main(String [] args){ UtilExcl utilExcl =新的UtilExcl(); 映射an50 = utilExcl.getExclMap(“D:\\ Users \\ User \\ Desktop \\ marClums \\ AN50.xls”); // 65 map ship79 = utilExcl.getExclMap(“D:\\ Users \\ User \\ Desktop \\ marClums \\ ship79.xls”); // 65 String [] tabs = utilExcl.getTabs(); int coun = 0; //测试ship79有50没有的表或字段 //循环79键 for(对象键:ship79.keySet()){ //判断是否包含键也就得到了不包含的表名 如果(an50.containsKey(键)){ ArrayListkey50List =(ArrayList )an50.get(key); ArrayList key79List =(ArrayList )ship79.get(key); //同第一个循环自行理解 for(int i = 0; i 最后希望大家喜欢如果是同类型数据库建议通过上面的表大写写sql个人sql写的不是很好
也就不给上面sql方案了