java通过代码给所有表的字段批量加索引

package test;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import com.zxkj.utils.jdbc.DaoUtils;

public class DbIndexTest {
	public static void main(String[] args) throws SQLException{
		List<Map<String, Object>> tables = DaoUtils.queryMapList("SELECT table_name FROM information_schema.tables WHERE table_schema = 'traindb'");
		System.out.println(tables);
		tables.stream().forEach(e->{
			String tableName =e.get("table_name")+"" ;
			System.out.println(tableName);
			try {
				List<Map<String, Object>> columns = DaoUtils.queryMapList(
					   "select "
					+" a.table_schema, "
					+" a.table_name, "
					+" b.table_comment table_comment, "
					+" a.column_name column_name, "
					+" a.column_comment column_comment, "
					+" a.column_type column_type, "
					+" a.column_key column_key from  information_schema.columns a "
					+" join information_schema.TABLES b on a.table_name = b.TABLE_NAME "
					+" where a.table_schema = 'traindb' "
					+" and a.table_name = '"+tableName+"' ");
				
				System.out.println(columns);
				columns.stream().forEach(c->{
					String columnName =c.get("column_name")+"" ;
					System.out.println(columnName);
					
					if("id".equals(columnName)){
						try {
							DaoUtils.updateTable("ALTER TABLE "+tableName+" ADD UNIQUE ( "+columnName+" )");
						} catch (Exception e1) {
							// TODO Auto-generated catch block
							//e1.printStackTrace();
							System.err.println("添加主键索引失败");
						}
					}else{

						try {
							DaoUtils.updateTable("ALTER TABLE "+tableName+" ADD INDEX "+columnName+"( "+columnName+" )");
						} catch (Exception e1) {
							// TODO Auto-generated catch block
							//e1.printStackTrace();
							System.err.println("添加主键索引失败");
						}
					}
				});
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		});
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值