SPOOL导出指定格式的Oracle数据文件

为了方便数据的处理,或者本身有特殊的数据格式要求,我们可以使用SPOOL命令导出Oracle数据库数据数据文件,并指定格式,高效且强大...

所属分类 数据库

相关标签 OracleShell导出

数据文件诉求

如今,自动化是大家越来越关注的方向,很多任务更加迫切需要一键/小白化。

在对于 Oracle 数据库数据的处理,不能始终死板的使用 import 语句来导出数据。

.dmp文件局限性太大(尤其是不便于处理)。

在SHELL脚本中,.dmp文件处理起来非常麻烦,容错率极差。

自动化脚本中,对于规整的指定格式的文本处理起来更加得心应手,不容易出错。

米虫在本文中以导出数据库表记录,逗号隔开字段内容为例,写一个脚本实例。

配置信息

编写数据导出主要用到 sqlplus 客户端命令、 spool 命令和 EOF 命令。

spool 可以设置大量的格式化配置。

# 基本配置
dbName=mebugs
dbPW=password
old_db_ip_port_id=127.0.0.1:1536/ora11g
# 导出的数据文件
dataFile=data/user_mebugs_info.txt
# 数据库连接命令
sqlplus -s $dbName/$dbPW@//$old_db_ip_port_id
# SPOOL的指定文件 
spool $dataFile    

由于EOF语句中不支持加批注,所有配置项在此处说明

  • SET echo OFF 不输出结果至界面
  • SET feedback OFF 不输出执行反馈(如:8 rows selected.)
  • SET newpage NONE 不输出分页的空白行
  • SET pagesize 0 不设置分页
  • SET linesize 5000 每行最大长度
  • SET verify OFF 不输出确认信息
  • SET term OFF 不输出大表数据界面
  • SET trims ON 每行多余的空格去掉
  • SET heading OFF 不输出表头
  • SET trimspool ON 文件尾部去空格
  • SET trimout ON 控制台尾部去空格
  • SET timing OFF 不显示执行语句所用的时间

所关闭设置是为了导出特定格式的数据文件更纯粹,跟便于格式化处理。

具体配置按照个人的需求去配置。

导出的数据格式通过SQL多字段拼接为一个字段,可以自定义。

脚本样例

# 基本配置
dbName=mebugs
dbPW=password
old_db_ip_port_id=127.0.0.1:1536/ora11g
# 导出的数据文件
dataFile=data/user_mebugs_info.txt
# 开始导出
sqlplus -s $dbName/$dbPW@//$old_db_ip_port_id > /dev/null<<EOF
spool $dataFile
SET echo OFF
SET feedback OFF
SET newpage NONE
SET pagesize 0
SET linesize 5000
SET verify OFF
SET term OFF
SET trims ON
SET heading OFF
SET trimspool ON
SET trimout ON
SET timing OFF
select rtrim(COLUMN_1,chr(10))||','||rtrim(COLUMN_2,chr(10))||','||rtrim(COLUMN_3,chr(10))||','||rtrim(COLUMN_4,chr(10)) from mebugs_data;
spool OFF
exit
EOF

关于 EOF 本站有文章介绍过,一个简单的支行输出指令的语法,感兴趣可以看看。

米虫

做一个有理想的米虫,伪全栈程序猿,乐观主义者,坚信一切都是最好的安排!

本站由个人原创、收集或整理,如涉及侵权请联系删除

本站内容支持转发,希望贵方携带转载信息和原文链接

本站具有时效性,不提供有效、可用和准确等相关保证

本站不提供免费技术支持,暂不推荐您使用案例商业化

发表观点

提示

昵称

邮箱

QQ

网址

当前还没有观点发布,欢迎您留下足迹!

同类其他

数据库

Linux下Oracle数据库配置日志目录及统一迁移

很多运维人员习惯采用默认安装的方式安装Oracle数据库,而Oracle日志默认放置在/opt目录下,绝大多数Linux环境的大磁盘往往挂载在/home,因此经常会出现磁盘空间不足的情况,采用本文配置可指定并迁移日志

Oracle数据库基础实用维护命令集

Linux系统下的Oracle数据库实用常用的维护命令整理,本文内容偏向运维,主要包含:基础启动重启、表空间维护、数据库角色与用户维护、字符集配置等,并给出各类场景的实例语句

ORA-00257: archiver error. Connect internal only, until freed.

登录Oracle报错 ORA-00257: archiver error. Connect internal only, until freed. 由于归档日志(archive log)已满引起的。

Oracle存储过程Procedure基础语法

存储过程是个好东西,WEB工程在架构阶段会设计很多存储过程,后续在架构中开发需求的时候,反而会直接写SQL完成各项诉求。所以说,这玩意儿略微有那么一点点伪高端。

Oracle数据库MERGE INTO语句条件入库

Oracle 9i版本引入MERGE INTO语句,其主要用于实现条件入库能力,用于解决对于已有数据更新升级的情况,即可实现不存在数据则插入,存在数据则更新的分支判断形式的更新能力

MongoDB通过$lookup实现多表连接查询

对于数据库而言,多表连接操作可以算的上是基本操作,在 MongoDB 通过 $lookup 聚合查询可以实现多表左连接查询,在后续的版本中 $lookup 得到了一系列的增强,实现更为复杂的关联查询

选择个人头像

昵称

邮箱

QQ

网址

评论提示

  • 头像:系统为您提供了12个头像自由选择,初次打开随机为你选择一个
  • 邮箱:可选提交邮箱,该信息不会外泄,或将上线管理员回复邮件通知
  • 网址:可选提交网址,评论区该地址将以外链的形式展示在您的昵称上
  • 记忆:浏览器将记忆您已选择或填写过得信息,下次评论无需重复输入
  • 审核:提供一个和谐友善的评论环境,本站所有评论需要经过人工审核