1.前言
上一篇“文章”介绍了一些常用的SQL*PLUS命令,现在已经可以使用这些命令对数据库进行简单的定向查询。
上文链接:
Oracle PL/SQL自学(二):常用的SQL*PLUS命令
设想这样的场景:
1.1同为开发人员的同事需要一份数据文件,但他们并不会PL/SQL语言,这时需要怎么做才能方便快捷地把数据导出提供给他们?
1.2产品经理想要将大量数据置入某款商业软件(如excel),这时需要怎么做?
1.3有没有一种办法,可以通过双击执行一个简单脚本,就能实现数据的导出?
2. 导出Oracle数据库中的数据给其他系统
下文将介绍如何利用一个简单的脚本,来快速导出数据到目标目录下。
(1)在G盘建立目录G:\Oracle\sqltest
(2)打开记事本,编写脚本test1.sql,保存到新建目录下
/*test1.sql*/
set line 100
set pagesize 20
set heading off-----------------------------查询语句输出结果不显示列名
spool G:\Oracle\sqltest\data1.txt----------------------------查询语句
select job||','||ename||','||sal from emp;-------------各列以逗号分隔
spool off
(3)启动dos,进入sqlplus,@G:\Oracle\sqltest\test1 执行脚本
(4)查询结果会被记录在文件data1.txt中
3.将数据导出操作自动化
(1)新建一个记事本test2.txt,写入两条dos命令;
/*test2.txt>>*/
sqlplus /nolog @G:\Oracle\sqltest\test2.sql-------------启动但不登录数据库,执行test2.sql
exit-------------------------------------------运行结束后,关闭dos界面
注意:此处使用绝对路径。
接着另存为test2.bat(.bat是指批处理文件,即执行后自动连续执行多条命令。)
(2)在test1.sql中添加登录语句,重命名为test2.sql;
/*test2.sql*/
connect scott/scott-------------------------------------- 登录数据库
set line 100
set pagesize 20
set heading off-----------------------------查询语句输出结果不显示列名
spool G:\Oracle\sqltest\data2.txt----------------------------查询语句
select job||','||ename||','||sal from emp;-------------各列以逗号分隔
spool off
exit
(3)执行test2.bat;
注意:可能出现执行后没有任何反应的情况,以管理员身份运行test2即可。
(4)查询结果会被记录在文件data2.txt中
4.Q&A
Q:执行脚本时出现问题: SP2-0310: 无法打开文件
A:路径有误;
Q:dos登录数据库时出现以下提示:
C:\Windows\System32>sqlplus
SP2-1503: 无法初始化 Oracle 调用界面
SP2-0152: ORACLE 不能正常工作
A:以管理员身份运行cmd.exe;