第一次接触linux系统,之前写的数据导出不好使了。原因是程序放在root用户下,要runtime执行exp的话,root不认exp命令;找了好多资料,最后决定写个shell脚本;没接触过shell脚本,网上大部分例子都写的挺复杂的;贴个简单的,不带传参什么的;只是最简单的数据表的导出备份 在Linux环境下,shell脚本是自动化任务的强大工具,尤其对于数据导出这样的操作,通过编写shell脚本可以方便地实现定期备份或者按需导出。本文将深入讲解如何使用shell脚本来实现数据的导出,并结合Java代码进行调用。 让我们分析给出的`backup.sh`脚本: ```bash su - oracle -c " exp cg23/sa tables=exp_table1,exp_table2 file=/home/oracle/exp/exp.dmp" ``` 这个脚本做了以下几件事: 1. `su - oracle`: 切换到`oracle`用户。这是因为`exp`命令通常是由数据库用户(如`oracle`)执行的,因为它需要访问数据库的权限。 2. `-c`: 表示接下来的命令将在新创建的shell会话中执行。 3. `exp`: 这是Oracle数据库的导出工具,用于将数据库对象(如表、索引等)导出为二进制或文本格式的文件。 4. `cg23/sa`: 数据库连接的用户名和密码。 5. `tables=exp_table1,exp_table2`: 指定要导出的表名,这里有两个表:`exp_table1`和`exp_table2`。 6. `file=/home/oracle/exp/exp.dmp`: 指定导出文件的路径和名称。在这个例子中,文件被保存在`/home/oracle/exp/`目录下,名为`exp.dmp`。 在Linux环境中,运行此脚本需要确保`oracle`用户有执行`exp`命令的权限,以及拥有写入指定文件路径的权限。 接下来,我们看看Java代码部分,这部分代码是用于执行shell脚本的: ```java String shfilepath = ServletActionContext.getServletContext().getRealPath("/"+"download/shell/backup.sh"); String exp = "sh " + shfilepath; Runtime rt = Runtime.getRuntime(); Process processexp = null; int success = 0; try { processexp = rt.exec(exp); bool = true; // 执行情况标志位,成功 true;报异常 false } catch (IOException e) { bool = false; e.printStackTrace(); // 打印错误信息 } ``` 1. `ServletActionContext.getServletContext().getRealPath("/")+"download/shell/backup.sh"`获取`backup.sh`的绝对路径。这通常用于Web应用,获取服务器上的实际文件路径。 2. `sh filepath`: 在Java中,使用`Runtime.getRuntime().exec()`方法执行shell命令。这里的命令是`sh`,后面跟上shell脚本的路径,意味着执行这个脚本。 3. `Runtime.getRuntime().exec(exp)`执行shell命令。`Process`对象`processexp`用于与执行的进程进行交互,例如获取进程的输出或错误流。 4. `catch (IOException e)`处理可能抛出的异常,例如找不到文件、无权限等。 为了使Java代码能够成功执行shell脚本,需要注意以下几点: - 确保Java运行环境有执行`sh`命令的权限。 - 脚本路径正确且Java程序有读取该文件的权限。 - `oracle`用户有执行`exp`命令和写入指定文件的权限。 总结来说,这个场景涉及到了Linux下的shell脚本编写,主要是使用`exp`命令导出Oracle数据库中的数据,并通过Java程序来调用这个脚本。这在日常的运维工作中非常常见,通过这种方式可以实现自动化数据备份,提高工作效率。在实际应用中,可能还需要考虑更多的细节,比如错误处理、日志记录、定时任务等。
















- weixin_397043012017-10-28有用,值得收藏
- JensenDeng2014-09-04不错啊,谢谢分享!

- 粉丝: 122
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机课程设计之自动打铃系统.docx
- ACCESS数据库考试判断题整理.ppt
- 吉林大学2021年9月《计算机系统结构》作业考核试题及答案参考10.docx
- 数控圆弧编程举例讲解.doc
- 南开大学2021年9月《Python编程基础》作业考核试题及答案参考2.docx
- 电力企业常用电力系统分析软件应用.ppt
- 基于大数据技术的智慧养老云平台设计要点.docx
- 迈达斯软件初学.doc
- 智能化技术在电气工程自动化控制中的应用解析(1).docx
- 软件系统开发合同范本讲义教材.docx
- 汽车理论习题Matlab程序.doc
- 改进后“聚焦教与学转型难点”信息化教学设计小学语文1(1).doc
- KNN算法实验报告.doc
- 计算机数字化摄影测量技术在工程测量中的应用.docx
- 高中历史专题4中国近现代社会生活的变迁2交通和通信工具的进步省公开课一等奖新名师优质课获奖PPT课件.pptx
- GM游戏开发入门中文教程.doc学习推荐.pdf


