mysql 分表 时间段_mysql按日期时间分表

1:新建一个基础表 message CREATE TABLE message ( a VARCHAR(32) NOT NULL PRIMARY KEY,  message VARCHAR(200))engine=myisam ; 2:工具类  ConnectUtil package testMerge.util; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.mysql.jdbc.Connection; /**  * 说 明 :数据库连接类  *   * @author 作 者 名 :wenjie
 * @version 版 本 号 :V1.0.12.0
 *          创建时间: 2017年7月3日 上午11:18:30  * @email duanwenjie@vrvmail.com.cn  *   */ public class ConnectUtil { private static Connection connection = null; // 连接emptyclassroom数据库 private static String DatabaseName = "test"; public static final String name = "com.mysql.jdbc.Driver"; public static final String user = "root";// 默认root public static final String password = "123456"; // 默认root public  static Connection getCon() { String url = "jdbc:mysql://192.168.118.130:3306/" + DatabaseName + "?useUnicode=true&characterEncoding=utf8&useSSL=true"; try { Class.forName("com.mysql.jdbc.Driver"); connection = (Connection) DriverManager.getConnection(url, user, password); //System.out.println(connection.getMetaData().getURL()); return connection; } catch (Exception e) { System.out.println("创建连接失败"); e.printStackTrace(); } return null; } public void closeCon() { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("关闭连接失败"); e.printStackTrace(); } } public static void main(String[] args) { System.out.println(ConnectUtil.getCon()); } public static void executeUpdate(String sql)     {     try{     connection = getCon(); //    sql = "select * from total";  //SQL语句         PreparedStatement ps = connection.prepareStatement(sql); //准备执行SQL语句         ps.executeUpdate(); //执行语句,返回结果集     }catch(Exception e){     e.printStackTrace();     }     } public static int executeQuery(String sql)     {     int count = 0;     try{     connection = getCon();         PreparedStatement ps = connection.prepareStatement(sql); //准备执行SQL语句         ResultSet rs = ps.executeQuery(); //执行语句,返回结果集     while(rs.next())     {       String message=rs.getString("message");       System.out.println(message);       count++;     }     }catch(Exception e){     e.printStackTrace();     }             return count;     } } 3:实现类 : AutoCreateTableTask package  testMerge.task; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import org.apache.log4j.Logger; import testMerge.util.ConnectUtil; /**  *   * 说 明:自动创建表Task  * 描 述:  * @author: duanwenjie  * @email : duanwenjie@vrvmail.com.cn  * @version:V1.0  * 创建时间 2017年5月16日  */ public class AutoCreateTableTask extends TimerTask { public static Timer autoCreateTable_timer;//清理数据 private static Logger logger = Logger.getLogger(AutoCreateTableTask.class); private static DateFormat formatDate = new SimpleDateFormat("YYYYMMDDhhmmss"); //private static Connection conn = ConnectUtil.getCon(); public synchronized void execute() { String dateStr = formatDate.format(new Date()); //创建表 String sqlCreate  = "CREATE TABLE message_" + dateStr + " LIKE message"; ConnectUtil.executeUpdate(sqlCreate); System.out.println("=========tableName=======[message_" + dateStr + "]"); //插入数据 String sqlInsert = "insert into message_"+dateStr+" values ("+dateStr+",'message_"+dateStr+"')"; ConnectUtil.executeUpdate(sqlInsert); } @Override public void run() { execute(); } public static void main(String[] args) { //间隔时间 1秒 一天 int n = 10; long intervalTime = n*1000; Calendar calendar = Calendar.getInstance();  /*** 定制每日2:00执行方法 ***/ //calendar.set(Calendar.HOUR_OF_DAY, 2); Date dateSql=calendar.getTime(); //第一次执行定时任务的时间 //如果第一次执行定时任务的时间 小于 当前的时间,此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。 //if (dateSql.before(new Date())) { //dateSql = this.addDay(dateSql, 1); //} //执行任务 //scheduleAtFixedRate 可以用来处理并发 autoCreateTable_timer = new Timer(); autoCreateTable_timer.schedule(new AutoCreateTableTask(), dateSql, intervalTime); } } 总结: 该方法比较局限性,必须要针对日期时间来做,查询和插入时间都需要以时间为维度。 分页查询使用union all 来处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值