使用sqlplus工具导出数据到csv文件,要求文件带有时间戳

简介:

现业务部门有需求,需要每天定时把数据库里的一些特定数据导出来,最好能以日期命名加以区分存档。

    这里选用是oracle的sqlplus工具。理由就是简单快捷高效,可以跨平台,linux和win都可以操作,直接借助oracle的客户端就能完成,不行sqlldr那样复杂。

    关于spool指令的参数,这里就不多叙述了,网上随便就能搜到,直接上脚本吧(我这里选的是windows平台)

 scott.sql如下:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
set  colsep  ,
set  feedback  off  
set  heading  on 
set  trimout  on 
set  pagesize 50
set  linesize 80
set  numwidth 10
set  termout  off
set  trimout  on
set  underline  off
col datestr new_value filename
select  'D:\test\scott_' ||to_char(sysdate, 'yyyymmdd' )|| '.csv'  datestr  from  dual;
spool &filename  
select  a.empno,a.ename,a.sal  from  emp a;  
spool  off  
exit

注:

1
2
3
col datestr new_value filename
select  'D:\test\scott_' ||to_char(sysdate, 'yyyymmdd' )|| '.csv'  datestr  from  dual;
spool &filename

 

其中这一部分是定义导出文件的变量,取得是数据库时间


另外准备一个连接数据库的bat脚本,select.bat:

1
2
sqlplus scott /scott @HSDB @scott.sql
pause

具体执行效果如下图,想了解更多欢迎评论交流

9aac5227f1579bfa3d73cc55ffc2ec20.png


本文转自 青苗飞扬 51CTO博客,原文链接:http://blog.51cto.com/qingmiao/1981520

相关文章
|
4月前
Navicat——数据以CSV格式文件导出后乱码
Navicat——数据以CSV格式文件导出后乱码
82 0
|
测试技术 数据安全/隐私保护
|
存储 数据挖掘 数据库
|
关系型数据库 MySQL Shell
利用Shell将MySQL数据表导出为csv文件
完整的Shell代码如下: #!/bin/bash MYSQL=`which mysql` #show databases in mysql echo "database in mysql:" echo "*******************" $MYSQL -u root -p****** 1.
2327 0