oracle 数据导出

分类: oracle 2011-10-23 16:22 25人阅读 评论(0) 收藏 举报

方案一:使用SQLPlus的Spool命令。Spool是SQLPlus的命令,不是SQL语句。通过Spool可以将SQL语句(导出的话主要是使用Select)的执行结果导出到指定的文件中,即“所见即所得”:使用Spool命令后,在SQLPlus中执行SQL语句打印在屏幕上的结果会原样导出到文件中。为了控制导出数据的格式,Spool提供了一系列Set命令来设置导出的格式,当然也可以在Select语句中直接设置格式。

使用Spool导出数据的示例(在命令行执行):

  1. SQL> spool d:\data.cvs                【指定导出文件,导出开始】
  2. SQL> set echo off;                       【不显示执行的SQL命令】
  3. SQL> set feedback off;                【关闭“已选择XX行”的提示】
  4. SQL> set heading off;                  【去掉select结果的字段名,只显示数据】
  5. SQL> set termout off;                  【关闭屏幕上的SQL执行结果显示】
  6. SQL> set trimspool on;                【去除重定向(Spool)输出时每行的拖尾空格】
  7. SQL> set pagesize 0;                   【输出每页行数,缺省为24,为了避免分页,可设定为0】
  8. SQL> select 'This is a test data file for Spool' from dual;
  9. This is a test data file for Spool
  10. SQL> select no,class,name from database;
  11. 20110001 1101 Mysql
  12. 20110002 1101 Oracle
  13. 20110003 1102 DB2
  14. 20110004 1103 SQL Server
  15. SQL> select no||'-'||class||'-'||name from database;         【在Select中设置格式】
  16. 20110001-1101-Mysql
  17. 20110002-1101-Oracle
  18. 20110003-1102-DB2
  19. 20110004-1103-SQL Server
  20. 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内容

  1. spool d:\data.csv
  2. set echo off;
  3. set feedback off;
  4. set heading off;
  5. set termout off;
  6. set trimspool on;
  7. set pagesize 0;
  8. select 'This is a test data file for Spool' from dual;
  9. select no,class,name from database;
  10. select no||'-'||class||'-'||name from database;
  11. 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 数据导出相关推荐

  1. 在pl/sql中使用exp/imp工具实现oracle数据导出/导入

    在pl/sql中使用exp/imp工具实现oracle数据导出/导入 2006年11月19日 星期日 10:59 Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令 ...

  2. oracle导出exp步骤,oracle数据导出导入(exp/imp)

    1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...

  3. oracle计算数据导出,oracle 数据导出

    方案一:使用SQLPlus的Spool命令.Spool是SQLPlus的命令,不是SQL语句.通过Spool可以将SQL语句(导出的话主要是使用Select)的执行结果导出到指定的文件中,即" ...

  4. oracle 数据 导出 excel 自动分多个文件,从oracle数据库中导出大量数据到excel中为什么自动分成了好几个excel文件《excel表格新手入门》...

    EXCEL中一个单元格中多行文本如何导入或复制到SQL SERVER 数据库表中? 保留换行符保存进数据表啊,读取出来显示的时候根据需要进行转换就行了,比如要在网页上显示,可以把换行符转换成HTML的 ...

  5. Linux oracle 数据导出导入步骤:

    使用root用户切换到 Oracle用户下 , su - oracle 在源数据库中导出数据,如果是整个库导出,可以指定用户,如果导出指定的表数据,只能指定表名,两者不能同时存在. 导出整个用户下的表 ...

  6. oracle数据导出方法,oracle多种导入导出数据方法

    dmp格式: 1.dmp格式的导出可以通过客户端工具(PL/SQL)操作来完成,通过菜单栏---->Tools---->Export Tables,然后设置勾选相应参数即可,rows代表是 ...

  7. oracle数据导出限定行数,oracle exp 导出数据最大行数是否有限制

    匿名用户 1级 2012-10-17 回答 exp 没有行数限制,你可以通过设置参数ROWS试一下. 可以通过输入跟有各种参数的 EXP 命令来控制导出 的运行方式.要指定参数, 您可以使用关键字: ...

  8. Oracle数据的导出与导入

    前序:关于Oracle9i数据的导出与导入问题,折腾我好长时间了,尤其是导入.今天在一位同事的指导下,算是终于成功了,为了记住这位同事的帮助,在此仅以"坤"作为记号. 正文: Or ...

  9. pl/sql oracle导出,用pl/sql实现oracle数据的导出和导入

    一.PL/SQL工具实现oracle数据导出 1. 数据对象导出 工具->导出用户对象,弹出如下界面: 选择用户,选择导出文件的路径,命名导出文件名称(.sql),然后点击导出即可. 注意:此方 ...

最新文章

  1. OpenCV中resize函数五种插值算法的实现过程
  2. Dubbo中的连接控制,你真的理解吗?
  3. 业界丨AI公司魅力榜:谷歌最慷慨排第二,最抠门的你应该能想到
  4. SAP应用followup transaction的错误讨论
  5. Flask爱家租房--房屋管理(获取主页幻灯片展示的房屋基本信息)
  6. AWS拓展中国合作伙伴生态 加速企业数字化转型进程
  7. 使用c++为node.js扩展模块
  8. python用什么来写模块-Python常用模块——模块介绍与导入
  9. elementui时间线的使用~满满的干货,不要错过
  10. 二维平面上判断点是否在三角形内
  11. 基于python生成手写的笔记
  12. js实现table中td单元格合拼并求和
  13. vs工程生成自定义图标的exe
  14. 2018笔试题——求一元一次方程的解
  15. session自动登录抽屉网(自动携带cookie)
  16. 理解LSTM网络(Understanding LSTM Networks)原文与翻译
  17. 多行输入以及结束输入
  18. 网页中多个图标在一张图片上,使用css将各图标显示
  19. 尚硅谷JavaWeb教程
  20. 《流浪地球2》票房突破18亿

热门文章

  1. 抓取一个连续的网页_搞懂各大搜索引擎蜘蛛的抓取规则,快速获得排名!
  2. python爬网页数据用什么_初学者如何用“python爬虫”技术抓取网页数据?
  3. 浙二大数据朱继红_快看!浙经贸2020级新生趣味大数据来咯!
  4. houdini帮助文档_用houdini做个简单版本的pcopen
  5. HashMap 详解七
  6. Tomcat-上传文件路径填坑
  7. 新款Linux版Skype迎来首次更新:提升稳定性,UX微调
  8. CodeForces 631D Messenger
  9. Web前端框架与类库的思考
  10. Swift学习——Swift解释特定的基础(七)