哈喽,前几久,和大家分享过如何把文本数据快速导入数据库(点击即可打开),今天再和大家分享一个小技能,将Oracle数据库中的数据按照指定分割符、指定字段导出至文本文件。
首先来张图,看看导出的数据是什么样子。
用到的就是Oracle的spool命令,可以将数据库数据导出一个文本文件,而且也可以指定数据分隔符,其中!^是数据之间的分隔符。
首先和大家分享一下,我的这个脚本是怎么写的,其中写select时,需要导出那些字段,直接写在select里面就可以了,此外,我也是在select里面指定了分割符!^。虽然可以用参数来指定分隔符,但用起来并不友好,结束时,我会演示的。
set echo offset heading offset feedback offset termout onset trimspool offspool /home/oracle/Desktop/studentinfoSpool.dat --指定导出数据保存的文本文件select stuid||'!^'||stuname||'!^'||sex||'!^'||age from studentinfo; spool offexit
一个不超过10行的SQL脚本,设置四五个参数,一个select语句,就可以搞定导数这个问题,是不是,很简单。
接下来对几个常用的参数进行解释一下。
参数 | 作用 |
---|---|
set echo off | 显示start启动脚本中的每个sql命令,默认为on。比如select语句 |
set pagesize 0 | 设置每页的行数,默认为24,设置为0时为不用分页,一般需要分页 |
set termout off | 在电脑屏幕显示脚本中的命令执行结果,默认为on。 |
set feedback off | 显示本次sql命令处理的记录数,默认为on。 |
set heading off | 输出域标题,默认为on |
set trimspool off | 去字段空格 |
set linesize 50 | 每行允许的最大字符数,设置大些,如果太小,数据库会报错或者数据自动换行,但如果设置过大,文件也会变大 |
set colsep ‘!^’; | 用来设置分割符,但不建议使用是参数,建议 手动写分割符 |
执行sql脚本
sqlplus c##orcl/1234 @/home/oracle/Desktop/studentinfoSpool.sql
说明:c##orcl是用户名,1234是密码,@后面是我们写的sql脚本,里面就是刚刚演示的SQL脚本。因为是本地数据库,所以没有写地址和端口等。
spool命令就是这么简单,但也有几个需要注意的地方。
注意事项:
1、不建议使用colsep 设置分割符。
可以把手动设置分隔符和使用colsep设置的结果对比一下。
可以看到,使用colsep 设置分隔符的数据中间会出现很多空格,而手动设置的分隔符就很好。此外,如果最后一个字段后面也需要分割符,colsep 参数就无能为力。
2、合理设置linesize
linesize 设置如果不当,会出现很多问题,如果太小,数据库可能会错,数据自动换行。太大的话,数据文件也会更大。
有没有get到这个小技巧?get到的话一定要点一个“再看”!!!
☞ 推荐阅读 ☜
1、文本数据可以这样导入数据库
2、凯利公式助你获得更多收益
3、苹果最近的股价有点......
4、crontab定时任务了解一下
5、此av非彼"AV"
“跟着菜鸟一起学R语言”转身变成“数据志”,不知道的也点一个“再看”呗!