`
yuelangyc
  • 浏览: 454663 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA数据统计文件的导出和导入、数据库一键备份还原。

 
阅读更多
        看标题感觉像是两个完全不同的东西,为什么要写到一起呢,虽然说功能流程来说完全不同,但是所用的技术好像是可以互通的。

    先说导出,导出也有几种情况,导出CSV和导出excel,导出excel以前写过,这里只贴出地址,

        http://yuelangyc.iteye.com/admin/blogs/1097336。导出格式为CSV的其实也很简单,

        可以用单纯的IO操作完成, 然后拼接成固定格式,再进行处理写入文件即可,

        CSV是一种以逗号分割的文本文件。也是一种常用的导出格式,可以用Excel工具打开。

        下面贴出自己写的简单的代码:
	/**
	 * List导出为csv格式
	 * @param arrayList 
	 * @param file 已经创建好的file文件
	 * @throws Exception
	 */
	private void exportFile(List<String[]> arrayList,File file) throws Exception{
		
		OutputStream out = new FileOutputStream(file,true);
		for(String [] arr:arrayList){
			for(int i = 0 ; i < arr.length ; i ++){
				
				out.write(arr[i]==null?"".getBytes():arr[i].getBytes());
				if(i<arr.length-1)out.write(",".getBytes());
			}
			out.write('\r'); // \r\n表示换行
			out.write('\n'); 
		}
		out.close();
		
	}


        导出的数据格式是固定的,所以也就有利于后面的导入数据恢复。

         如果是B/S的导出,类似下载那种的,可以将List<String []>拼凑好格式后放进response中,然后响应给客户,让客户进行文件保存操作。

	 public static void ExportCsv(String fileName,List<String[]> list,HttpServletResponse response){
		  PrintWriter out = null; 
		  CSVWriter writer = null;
		  
		  List<String[]> lines = new ArrayList<String[]>();
		  lines.addAll(list);
		  try{
			  response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("gb2312"), "iso8859-1") + ".csv" + "\"");
			  response.setCharacterEncoding("Gb2312");
			  response.setContentType("text/plain;charset=Gb2312");
			  out = response.getWriter();
			  writer = new CSVWriter(out);
			  writer.writeAll(lines);
			  writer.flush();
		  }catch (IOException e){   
	         	 error_logger.error("CsvExport.ExportCsv() error!",e);
	      } catch (Exception e){   
	        	 error_logger.error("CsvExport.ExportCsv() error!",e);
		  }finally{
			  try{
				  writer.close();
				  out.close();
			  }catch(Exception ex){}

		  }
	 }

        js中发送导出请求时直接document.location.href=url+"export.action?param=param"即可。
    
         数据库一键备份还有一种实现方式,我只在window XP上测试过,可以使用的,linux上不知道是不是可行。

        直接贴代码吧。
         /*
          * 一键备份指定表
	 * @deprecated
	 * @return 
	 */
    public String backupTable_old(){

    	//存放备份文件的路径 
        String backup_path = getProps("backup_file_path");
    	
    	//配置文件中获取数据库连接信息
        String user_name = getProps("user_name"); 
        String user_psw = getProps("user_psw"); 
        String db_name = getProps("db_name"); 
        String host_ip = getProps("host_ip"); 
        
		//获取文件保存备份路径,如果不存在,则先创建目录
        String saveFileDir=backup_path + ab + "/";
		File dir=new File(saveFileDir);
		if(!dir.exists())dir.mkdirs();
		
    	backup_path = saveFileDir + "backup_"+ab+"_"+dataFormat.format(new Date())+".sql";
    	
    	//需要备份的表,目前为已定义好的表
    	String tableClass = TB_CLASS + ab;
    	String tableClassUser = TB_CLASS_USER + ab;
    	String black = " ";
    	String allTable = black + tableClass + black + tableClassUser;
    	
    	StringBuffer sb = new StringBuffer();

    	
    	//拼接字符串,mysqldump命令。
    	sb.append("mysqldump").append(" -h ").append(host_ip).append(" -u ").append(user_name)
    	.append(" -p").append(user_psw).append(black).append(db_name).append(" --add-drop-table")
    	.append(" -t ").append(allTable).append("  --result-file=").append(backup_path);

    	String dumpSQL = sb.toString();
    	System.out.println(dumpSQL);
    	try {
    		
	    	Runtime.getRuntime().exec(dumpSQL);

    		//保存备份记录
	    	backup cb = backupService.insert(ab, allTable, backup_path, userid, dumpSQL);
	    	if(cb == null){
	    		System.out.println("ERROR ========================= backupTable");
	    	}
	    	
		} catch (IOException e) {
			message="数据备份时发生异常中!";
			e.printStackTrace();
			return SUCCESS;
		}
		
		message = "数据已导出到文件" + backup_path + "中";
		return SUCCESS;
    }


    以上代码仅供参考。如商用,出问题后果自负。
分享到:
评论

相关推荐

    arcgis实用插件(数据库一键数据导出导入,数据库对比,一键网格,出图,批量标注,数据库挂接,数据库检查等等)

    1. **数据库一键数据导出导入**:这个功能简化了数据交换的过程,允许用户快速地将数据从一个数据库导出到另一个数据库,或者从外部文件(如CSV、Shapefile等)导入到ArcGIS项目中。这在需要跨系统共享数据或更新...

    数据库数据的导入导出和数据库备份和恢复.pdf

    - 还原数据库:将备份的数据库文件复制回原位置并重建数据库。 - 崩溃恢复:在数据库系统崩溃后,使用备份文件和事务日志文件来恢复数据。 5. 数据库的导入导出工具和技术: - 使用SQL Server Management Studio...

    java调用mysql命令 导入导出数据库

    在Java编程中,有时我们需要对MySQL数据库进行导入和导出操作,这通常涉及到数据库的备份、迁移或数据恢复。在给定的标题“java调用mysql命令 导入导出数据库”中,我们可以理解为使用Java来执行MySQL的命令行工具,...

    java解析Excel文件并把数据存入数据库和导出数据为excel文件SpringBoot代码示例

    2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection.json 2. 导入sql到数据库:other/excel.sql 3. idea导入...

    数据导入导出 (java)

    本文将深入探讨如何使用Java进行数据的导入和导出,包括Excel、XML和TXT等常见格式的处理。 首先,我们要理解数据导入导出的核心目的:将数据从一个系统或文件中读取并写入另一个系统或文件。在Java中,这通常涉及...

    使用java把数据库数据导出生成xml文件

    使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件

    使用plsqldev对oracle数据库做备份还原操作

    选择正确文件后,点击"Import"按钮,PL/SQL Developer会开始执行还原操作,将.dmp文件中的数据导入到数据库中,从而恢复到备份时的状态。 在备份和还原过程中,需要注意以下几点: 1. 确保在进行备份和还原操作时,...

    Java导出Oracle数据库数据

    从标题和描述中可以看到,本文的主要内容是使用 Java 语言将 Oracle 数据库数据导出到文件中,并将其导入到 Oracle 数据库中。其中,使用了 exp 和 imp 命令来实现数据的导出和导入。 在 Oracle 数据库中,exp 和 ...

    oracle实现数据库的备份与还原

    Oracle提供多种备份方式,包括物理备份(如数据文件、控制文件的拷贝)和逻辑备份(如导出/导入、SQL*Plus的COPY命令)。在C#中,我们通常会借助Oracle的.NET数据提供者(Oracle Managed Data Access,ODP.NET)或者...

    Oracle 19c 备份恢复-导入导出

    Oracle 19c 备份恢复-导入导出 ...Oracle 19c 备份恢复-导入导出是指使用 exp 和 imp 工具实现数据库的备份恢复和数据的导入导出,通过选择合适的工作方式、模式和选项,可以满足不同的备份恢复和数据导入导出需求。

    Thinkphp数据库备份和还原

    3. **数据库还原过程**:还原数据库通常涉及到将备份文件(通常是SQL文件)导入到数据库服务器。在Thinkphp中,你可以使用`Think\Db`类的`execute()`方法执行SQL文件中的恢复命令。如果文件较大,可能需要分批执行,...

    达梦数据库导入导出+DM8-dexp和dimp使用手册+DM 数据库的备份还原包括两种类型+物理备份还原+逻辑备份还原

    `dexp`是一款用于达梦数据库的逻辑导出工具,它可以帮助用户将数据库中的数据和元数据导出到指定的文件中。 1. **使用场景**: - **数据迁移**:将数据从一个数据库迁移到另一个数据库。 - **数据备份**:定期...

    java实现数据库容灾备份

    而`java实现数据库备份说明.txt`文件可能详细阐述了实现备份的具体步骤和技术细节,包括代码示例、配置说明和可能遇到的问题。 在实际项目中,为了提高容灾能力,我们还需要考虑备份的冗余和恢复策略。例如,可以...

    sql server 数据库导入导出方法

    SQL Server 数据库导入导出是数据库管理员和开发者常用的操作,目的是将数据库备份到本地或网络存储设备中,以便在需要时恢复数据库或将数据库迁移到其他服务器上。下面将详细介绍 SQL Server 数据库导入导出的方法...

    java实现Excel数据导入到数据库

    在Java编程环境中,将Excel数据导入到数据库以及将数据库数据导出到Excel是常见的数据处理需求。本篇文章将深入探讨如何使用Java实现这两个功能,主要涉及的技术栈包括Apache POI库用于操作Excel,以及JDBC(Java ...

    oracle数据库导入导出备份与恢复

    3. **磁盘空间**:检查磁盘空间以确保有足够的空间存储导出文件和导入数据。 4. **日志记录**:在执行命令时使用`log`参数记录操作日志,便于追踪和问题排查。 5. **数据一致性**:在进行数据导入时,根据需要选择...

    oracle备份与还原数据库

    Oracle数据库提供了三种标准的备份方式:导出/导入(EXP/IMP)、热备份(Hot Backup)和冷备份(Cold Backup)。这些方法根据不同的场景和需求,各有优势。 - **导出/导入(EXP/IMP)**:这是一种逻辑备份的方式,...

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    MYSQL 数据库导入导出命令

    MySQL 数据库导入导出命令是数据库管理员和开发者经常使用的命令,用于将 MySQL 数据库导出到文件中,以便备份、还原或迁移到其他服务器。下面将详细介绍 MySQL 数据库导入导出的命令和方法。 数据库备份 数据库...

Global site tag (gtag.js) - Google Analytics