oracle 数据导出
oracle 数据导出
方案一:使用SQLPlus的Spool命令。Spool是SQLPlus的命令,不是SQL语句。通过Spool可以将SQL语句(导出的话主要是使用Select)的执行结果导出到指定的文件中,即“所见即所得”:使用Spool命令后,在SQLPlus中执行SQL语句打印在屏幕上的结果会原样导出到文件中。为了控制导出数据的格式,Spool提供了一系列Set命令来设置导出的格式,当然也可以在Select语句中直接设置格式。
使用Spool导出数据的示例(在命令行执行):
- SQL> spool d:\data.cvs 【指定导出文件,导出开始】
- SQL> set echo off; 【不显示执行的SQL命令】
- SQL> set feedback off; 【关闭“已选择XX行”的提示】
- SQL> set heading off; 【去掉select结果的字段名,只显示数据】
- SQL> set termout off; 【关闭屏幕上的SQL执行结果显示】
- SQL> set trimspool on; 【去除重定向(Spool)输出时每行的拖尾空格】
- SQL> set pagesize 0; 【输出每页行数,缺省为24,为了避免分页,可设定为0】
- SQL> select 'This is a test data file for Spool' from dual;
- This is a test data file for Spool
- SQL> select no,class,name from database;
- 20110001 1101 Mysql
- 20110002 1101 Oracle
- 20110003 1102 DB2
- 20110004 1103 SQL Server
- SQL> select no||'-'||class||'-'||name from database; 【在Select中设置格式】
- 20110001-1101-Mysql
- 20110002-1101-Oracle
- 20110003-1102-DB2
- 20110004-1103-SQL Server
- SQL> spool off; 【导出结束】
查看导出文件d:\data.cvs,内容如下:
SQL> set echo off;
SQL> set feedback off;
SQL> set heading off;
SQL> set termout off;
SQL> set trimspool on;
SQL> set pagesize 0;
SQL> select 'This is a test data filefor Spool' from dual;
This is a test data file for Spool
SQL> select no,class,name fromdatabase;
20110001 1101 Mysql
20110002 1101 Oracle
20110003 1102 DB2
20110004 1103 SQL Server
SQL> select no||'-'||class||'-'||namefrom database;
20110001-1101-Mysql
20110002-1101-Oracle
20110003-1102-DB2
20110004-1103-SQL Server
SQL> spool off;
这并不是我们想要的结果,我们只想输出数据,而不想记录SQL命令。
SQL> set echo off; 【不显示执行的SQL命令】
SQL> set termout off; 【关闭屏幕上的SQL执行结果显示】
这两个设置似乎并没有生效。前面说过Spool是“所见即所得”,因为上述命令是在SQLPlus命令行中一句句输入的,因此Spool中记录了你输入的所有内容。如何才能得到只有数据的文件呢?解决办法就是把这些命令(包括Set和Select)写在一个.sql的脚本文件中,如下:
spool.sql内容
- spool d:\data.csv
- set echo off;
- set feedback off;
- set heading off;
- set termout off;
- set trimspool on;
- set pagesize 0;
- select 'This is a test data file for Spool' from dual;
- select no,class,name from database;
- select no||'-'||class||'-'||name from database;
- spool off;
在SQLPlus中直接执行这个脚本
SQL> @d:\spool.sql
查看导出文件d:\data.cvs,内容如下:
This is a test data file for Spool
20110001 1101 Mysql
20110002 1101 Oracle
20110003 1102 DB2
20110004 1103 SQL Server
20110001-1101-Mysql
20110002-1101-Oracle
20110003-1102-DB2
20110004-1103-SQL Server
Spool提供了一系列Set命令来设置导出的格式,更多Spool Set命令请参考《SQLPlusSpool备忘》。
方案二:使用Oracle自带的exp工具。exp/imp是Oracle自带的一对数据导出/导入工具,常用于数据恢复与备份,使用exp/imp工具可以实现单表导出、用户导出、数据库导出三个级别的导出操作。exp/imp分交互式、非交互式两种处理方式。关于imp导入请参考《Oracle数据导入》。
使用交互式exp的示例:
(交互式导出时大多数参数都有缺省值,如果选用缺省值,直接回车即可。)
$exptest/test123@appdb
Enter arrayfetch buffer size: 4096 > 【buffer大小】
Export file:expdat.dmp > m.dmp 【导出的文件名】
(1)E(ntiredatabase), (2)U(sers), or (3)T(ables): (2)U > 3 【导出模式】
Export tabledata (yes/no): yes > 【是否导出数据,NO表示只导出表结构】
Compressextents (yes/no): yes > 【是否压缩】
Export donein ZHS16GBK character set and ZHS16GBK NCHAR characterset 【字符集设置】
Aboutto export specified tables via Conventional Path ...
Table(T) orPartition(T:P) to be exported: (RETURN to quit) > cmamenu 【要导出的表名】
.. exporting table CMAMENU 4336 rows exported
Table(T) orPartition(T:P) to be exported: (RETURN to quit)> 【回车退出】
Exportterminated successfully without warnings.
使用非交互式exp的示例:
把scott用户里两个表emp,dept导出到文件/directory/scott.dmp
$exp scott/tiger tables=(emp,dept)file=/directory/scott.dmp grants=y
将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmpowner=(system,sys)
将数据库TEST完全导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
在exp里面加上导出emp的查询条件job='salesman' and sal<1600
【用的比较少,把满足条件的记录生成临时表后再exp会方便一些】
$exp scott/tiger tables=emp query=\"wherejob=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp
username.par为导出工具exp用的参数文件,里面具体参数可以根据需要去修改。
$expparfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmpfilesize=2000M log=/directory2/username_exp.log
参数文件username.par内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
导出全库数据。file参数可以设置多个文件,导出到多个文件中,每个文件最大2GB,exp只生成最少的导出文件,譬如导出的数据不足2GB,exp只生成/tmp/2004020601.dmp。如果file列表中的文件太少,能存放所有的导出数据,exp会提示用户输入文件名。出过程记录日志。filesize限制文件大小,因为有的文件系统的文件有大小限制。
experid=cams/cams@cams ll=y file=(/tmp/2004020601.dmp,/tmp/2004020602.dmp, /tmp/2004020603.dmp) filesize=2GB log=/tmp/20040206.log
方案三:使用Pro*C。Pro*C程序实际是内嵌有SQL语句或PL/SQL块的C程序,在Pro*C程序中可以嵌入SQL语句来完成动态地建立、修改、删除数据库中的表,查询、插入、修改和删除数据库表中的记录,还可以实现事务的提交和回滚。在Pro*C程序中还可以嵌入PL/SQL块,以改进应用程序的性能,特别是在网络环境下,可以减少网络传输和处理的总开销。使用Pro*C进行数据导出其实是将SQL、结构体、文件读写结合使用,将数据库表的数据以结构体的形式导出到文件中。
因为Pro*C语法比较杂,通常出错都出在SQL语句错误、C语句错误、结构体字段与表结构不对应等。
关于Pro*C的示例待续……
oracle 数据导出相关推荐
- 在pl/sql中使用exp/imp工具实现oracle数据导出/导入
在pl/sql中使用exp/imp工具实现oracle数据导出/导入 2006年11月19日 星期日 10:59 Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令 ...
- oracle导出exp步骤,oracle数据导出导入(exp/imp)
1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...
- oracle计算数据导出,oracle 数据导出
方案一:使用SQLPlus的Spool命令.Spool是SQLPlus的命令,不是SQL语句.通过Spool可以将SQL语句(导出的话主要是使用Select)的执行结果导出到指定的文件中,即" ...
- oracle 数据 导出 excel 自动分多个文件,从oracle数据库中导出大量数据到excel中为什么自动分成了好几个excel文件《excel表格新手入门》...
EXCEL中一个单元格中多行文本如何导入或复制到SQL SERVER 数据库表中? 保留换行符保存进数据表啊,读取出来显示的时候根据需要进行转换就行了,比如要在网页上显示,可以把换行符转换成HTML的 ...
- Linux oracle 数据导出导入步骤:
使用root用户切换到 Oracle用户下 , su - oracle 在源数据库中导出数据,如果是整个库导出,可以指定用户,如果导出指定的表数据,只能指定表名,两者不能同时存在. 导出整个用户下的表 ...
- oracle数据导出方法,oracle多种导入导出数据方法
dmp格式: 1.dmp格式的导出可以通过客户端工具(PL/SQL)操作来完成,通过菜单栏---->Tools---->Export Tables,然后设置勾选相应参数即可,rows代表是 ...
- oracle数据导出限定行数,oracle exp 导出数据最大行数是否有限制
匿名用户 1级 2012-10-17 回答 exp 没有行数限制,你可以通过设置参数ROWS试一下. 可以通过输入跟有各种参数的 EXP 命令来控制导出 的运行方式.要指定参数, 您可以使用关键字: ...
- Oracle数据的导出与导入
前序:关于Oracle9i数据的导出与导入问题,折腾我好长时间了,尤其是导入.今天在一位同事的指导下,算是终于成功了,为了记住这位同事的帮助,在此仅以"坤"作为记号. 正文: Or ...
- pl/sql oracle导出,用pl/sql实现oracle数据的导出和导入
一.PL/SQL工具实现oracle数据导出 1. 数据对象导出 工具->导出用户对象,弹出如下界面: 选择用户,选择导出文件的路径,命名导出文件名称(.sql),然后点击导出即可. 注意:此方 ...
最新文章
- OpenCV中resize函数五种插值算法的实现过程
- Dubbo中的连接控制,你真的理解吗?
- 业界丨AI公司魅力榜:谷歌最慷慨排第二,最抠门的你应该能想到
- SAP应用followup transaction的错误讨论
- Flask爱家租房--房屋管理(获取主页幻灯片展示的房屋基本信息)
- AWS拓展中国合作伙伴生态 加速企业数字化转型进程
- 使用c++为node.js扩展模块
- python用什么来写模块-Python常用模块——模块介绍与导入
- elementui时间线的使用~满满的干货,不要错过
- 二维平面上判断点是否在三角形内
- 基于python生成手写的笔记
- js实现table中td单元格合拼并求和
- vs工程生成自定义图标的exe
- 2018笔试题——求一元一次方程的解
- session自动登录抽屉网(自动携带cookie)
- 理解LSTM网络(Understanding LSTM Networks)原文与翻译
- 多行输入以及结束输入
- 网页中多个图标在一张图片上,使用css将各图标显示
- 尚硅谷JavaWeb教程
- 《流浪地球2》票房突破18亿
热门文章
- 抓取一个连续的网页_搞懂各大搜索引擎蜘蛛的抓取规则,快速获得排名!
- python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?
- 浙二大数据朱继红_快看!浙经贸2020级新生趣味大数据来咯!
- houdini帮助文档_用houdini做个简单版本的pcopen
- HashMap 详解七
- Tomcat-上传文件路径填坑
- 新款Linux版Skype迎来首次更新:提升稳定性,UX微调
- CodeForces 631D Messenger
- Web前端框架与类库的思考
- Swift学习——Swift解释特定的基础(七)