Oracle大规模数据快速导出文本文件
哈喽,前几久,和大家分享过如何把文本数据快速导入数据库(点击即可打开),今天再和大家分享一个小技能,将Oracle数据库中的数据按照指定分割符、指定字段导出至文本文件。
首先来张图,看看导出的数据是什么样子。

用到的就是Oracle的spool命令,可以将数据库数据导出一个文本文件,而且也可以指定数据分隔符,其中!^是数据之间的分隔符。
首先和大家分享一下,我的这个脚本是怎么写的,其中写select时,需要导出那些字段,直接写在select里面就可以了,此外,我也是在select里面指定了分割符!^。虽然可以用参数来指定分隔符,但用起来并不友好,结束时,我会演示的。
set echo off
set heading off
set feedback off
set termout on
set trimspool off
spool /home/oracle/Desktop/studentinfoSpool.dat --指定导出数据保存的文本文件
select stuid||'!^'||stuname||'!^'||sex||'!^'||age from studentinfo;
spool off
exit
一个不超过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 设置如果不当,会出现很多问题,如果太小,数据库可能会错,数据自动换行。太大的话,数据文件也会更大。

原文链接:https://blog.csdn.net/wzgl__wh/article/details/102887557
Oracle大规模数据快速导出文本文件的更多相关文章
- 关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法
在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法: 1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中2. 建立数据库间的 ...
- oracle数据库数据导入导出步骤(入门)
oracle数据库数据导入导出步骤(入门) 说明: 1.数据库数据导入导出方法有多种,可以通过exp/imp命令导入导出,也可以用第三方工具导出,如:PLSQL 2.如果熟悉命令,建议用exp/imp ...
- Oracle AWR 数据导入/导出的步骤
LINUX状态下,连接oracle用户:su - oracle 1.上传采集快照.dmp文件至服务器 (dbid:4292035712) 919219826 2.在服务器端创建目录 (即文件夹a ...
- Oracle基础 数据泵导出/导入Expdp/impdp(转)
一.EXPDP和IMPDP使用说明 Oracle Database 10g引入了最新的数据泵(Data Dump)技术,数据泵导出导入(EXPDP和IMPDP)的作用 1)实现逻辑备份和逻辑恢复. 2 ...
- Oracle RAC数据泵导出问题处理
1. 设置导出文件路径 sqlplus / as sysdba SQL> alter session set container=spdb1pdb; SQL> create directo ...
- 大量数据快速导出的解决方案-Kettle
1.开发背景 在web项目中,经常会需要查询数据导出excel,以前比较常见的就是用poi.使用poi的时候也有两种方式,一种就是直接将集合一次性导出为excel,还有一种是分批次追加的方式适合数据量 ...
- Oracle导入数据无法导出空表的问题
Oracle 11G在用export导出时,空表不能导出,11G R2中有个新特性,当表无数据时,不分配segment,以节省空间. 那么我们应该如何导出空表: 利用如下语句生成alter语句,未每个 ...
- Oracle odi 数据表导出到文件
最近新客户要求,以EXCEL数据方式,将数据表的内容,通过AS2协议传输到客户那边,本来打算使用存储过程直接输出EXCEL,但一想,ODI这么强大的工具应该可以直接进行转换,所以参考了一下官方标准文档 ...
- Oracle expdp数据泵导出,并在文件上附加上日期格式
一.导出操作的计算机要安装Oracle Client(建议管理员版本) 二.在服务端创建目录 create directory dpdir as '目录'; 三.给目录赋权限 grant read,w ...
随机推荐
- 【Dgango】模版
继承 ① extends用法:只继承一个模版 <!DOCTYPE html> <html lang="en"> <head> <meta ...
- mybatis list条件判断
<if test="userIds != null and userIds.size > 0"> AND user_id in <foreach colle ...
- redis列表底层实现之一——链表
注意标题中的“之一”,那么什么情况下,列表会使用链表作为其数据结构呢? 答案就是——列表键包含了大量的元素,或者列表中包含的元素都是比较长的字符串. Ok,由于链表大家都比较熟悉,接下来就直接给出链表 ...
- git将当前分支上修改的东西转移到新建分支
比如我在A分支做了一些修改,现在由于某种原因(如A分支已经合并到master)不能把A分支上修改的东西保留下来但是需要把A分支上修改的东西继续在新分支继续修改.那么现在我们可以有两种简单的做法完成这一 ...
- 第一篇:php开发环境
Window: 1.XAMPPhttps://www.apachefriends.org/index.html 2.WampServerhttp://www.wampserver.com/ Linux ...
- [PHP] php, apache, VS Code安装与配置
1. 下载
- ELK 学习笔记之 elasticsearch 基本查询
elasticsearch 基本查询: 基本查询: term查询: terms查询: from和size查询: match查询: match_all查询: match_phrase查询: multi_ ...
- Flutter 错误捕获的正确姿势
背景 我们知道,在软件开发过程中,错误和异常总是在所难免. 不管是客户端的逻辑错误导致的,还是服务器的数据问题导致的,只要出现了异常,我们都需要一个机制来通知我们去处理. 在 APP 的开发过程中,我 ...
- Zabbix监控方案-官方最新4.4版本
Zabbix 2019/10/12 Chenxin 参考 https://www.zabbix.com/documentation/4.0/zh/manual https://baike.baidu. ...
- 网络游戏开发-客户端2(自定义websocket协议格式)
Egret官方提供了一个Websocket的库,可以让我们方便的和服务器长连接交互. 标题写的时候自定义websocket的协议格式.解释一下,不是说我们去动websocket本身的东西,我们是在we ...