H2 数据库内存模式 导入导出查询

1.因为内存模式运行时不支持整体备份还原,关掉服务数据丢失,所以采用jsp 方式导出内存中的数据

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//取得spring 数据链接
DataSource dataSource = (DataSource)getBeans("dataSource");
Connection c = dataSource.getConnection();
Statement s = c.createStatement();
ResultSet r = s.executeQuery("SELECT *FROM INFORMATION_SCHEMA.TABLES where table_type='TABLE' ORDER BY TABLE_NAME desc");
Statement s2 = c.createStatement();
String action = request.getParameter("action");
while(r.next()){
	String table = r.getString("TABLE_NAME");
	System.out.println("table:"+table);
		
		if(action !=null&&action.equals("imp")){
			s2.addBatch("delete from "+table+";");
			stmt.addBatch("INSERT INTO "+table+" ( SELECT  * FROM  CSVREAD('c:/backup/"+table+".txt','','charset=UTF-8'));");
			
		}
		if(action !=null&&action.equals("exp")){
			s2.addBatch("CALL CSVWRITE('D:/h2base/backup/"+table+".txt', 'SELECT * FROM "+table+"','charset=UTF-8');");
		}
		System.out.println("table:"+table+" -done");
}
/*
//jdbc 链接内存数据库
if(action!=null&&action.equals("test")){
	Class.forName("org.h2.Driver");
	Connection conn = DriverManager.getConnection("jdbc:h2:mem:dataSource", "sa", "");
	Statement stmt = conn.createStatement();
	ResultSet rs = stmt.executeQuery("SELECT * FROM PORTAL_NEWS ");
	while(rs.next()) {
			System.out.println(rs.getString("id")+","+new String(rs.getString("news_title").getBytes("gbk"),"utf-8"));
	}
	conn.close();
	
}*/
s2.executeBatch();
s2.clearBatch();
c.close();

2.服务模式导出数据库

Backup.execute("D://h2base//aaa.zip", "~/db", "mydb", false); //备份

Restore.execute(D://h2base//aaa.zip, "~/db", "mydb");//还原

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值