免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4149 | 回复: 4
打印 上一主题 下一主题

利用spool将oracle中一个表的数据导出成规范的文本文件(原创) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-20 14:18 |只看该作者 |倒序浏览
要输出符合要求格式的数据文件只需在select时用字符连接来规范格式。比如有如下表

SQL>; select id,username,password from myuser;//测试表
      1 John       1234
         2 Jack       12345
         3 Rose       2345
         4 Joe        384657
         5 Tom        384655
         6 Jordan     384455

要输出符合1,John,1234,这样的数据格式就用select id||','||username||','||password||',' from myuser这样的语句。
SQL>; select id||','||username||','||password||',' from myuser;
1,John,1234,
2,Jack,12345,
3,Rose,2345,
4,Joe,384657,
5,Tom,384655,
6,Jordan,384455,

要输出符合1,John,"1234"这样的数据格式就用select id||','||username||','||'"'||password||'"' from myuser这样的语句。

SQL>; select id||','||username||','||'"'||password||'"' from myuser;//语句这样写就能格式化输出
1,John,"1234"
2,Jack,"12345"
3,Rose,"2345"
4,Joe,"384657"
5,Tom,"384655"
6,Jordan,"384455"
总知,输出格式完全可以由自己的需要来控制。

写个下面这样的脚本就行可以输出符合要求格式的数据至文件中,不会含有其它不需要东西,只有数据部分。
--脚本文件名为expmyusr.sql,存数据的文件名为e:\exp.txt
  1. set feedback off heading off verify off trimspool off
  2. set pagesize 0 linesize 50//linesize设定尽量根据需要来设定,大了生成的文件也大
  3. define fil= 'e:\exp.txt'
  4. prompt *** Spooling to &fil
  5. spool &fil
  6. select id||','||username||','||'"'||password||'"' from myuser;
  7. spool off;
复制代码


--执行过程
SQL>; @e:\expmyusr.sql
*** Spooling to e:\exp.txt
1,John,"1234"
2,Jack,"12345"
3,Rose,"2345"
4,Joe,"384657"
5,Tom,"384655"
6,Jordan,"384455"

--检查结果
SQL>; host
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\ado>;type e:\exp.txt
1,John,"1234"


2,Jack,"12345"


3,Rose,"2345"


4,Joe,"384657"


5,Tom,"384655"


6,Jordan,"384455"

检查可知结果符合要求。

论坛徽章:
0
2 [报告]
发表于 2003-05-20 14:22 |只看该作者

利用spool将oracle中一个表的数据导出成规范的文本文件(原创)

不错!

论坛徽章:
0
3 [报告]
发表于 2003-05-20 16:15 |只看该作者

利用spool将oracle中一个表的数据导出成规范的文本文件(原创)

厉害!(在我眼中)

不过还有一个疑问,按照仁兄的方法可以输出指定格式的数据,但是输出文件的每行都带有大量的空格符,好像是屏幕中的,这样的文件相当大!

问如何解决?

论坛徽章:
0
4 [报告]
发表于 2003-05-20 18:58 |只看该作者

利用spool将oracle中一个表的数据导出成规范的文本文件(原创)

原帖由 "wp1998" 发表:
厉害!(在我眼中)

不过还有一个疑问,按照仁兄的方法可以输出指定格式的数据,但是输出文件的每行都带有大量的空格符,好像是屏幕中的,这样的文件相当大!

问如何解决?

不是屏幕中的,而是因为脚本中的linesize 设置过大,每行200个字节,你试着把这个数字改为25,就会发现文件变得很小了,是原来的1/8。
  1. set feedback off heading off verify off trimspool off
  2. set pagesize 0 linesize 200 //linesize可根据实际需要来设定
  3. define fil= 'e:\exp.txt'
  4. prompt *** Spooling to &fil
  5. spool &fil
  6. select id||','||username||','||'"'||password||'"' from myuser;
  7. spool off;
复制代码

论坛徽章:
0
5 [报告]
发表于 2003-11-20 16:12 |只看该作者

利用spool将oracle中一个表的数据导出成规范的文本文件(原创)

需要这么麻烦吗?直接set trimspool on就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP