热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle导出表内数据为txt文本

一、教你一招不用编程序的:1:在pl/sqldev里面把这个表的内容SELECT出来;2:拷贝,复制到EXCEL中3:把EXCEL文件另存为.CSV文件4:用记事本把.CSV文件打开!出来了二、setlinesize1000setpagesize0sete...SyntaxHig
一、
教你一招不用编程序的:
1: 在pl/sql dev里面把这个表的内容SELECT出来;
2:拷贝,复制到EXCEL中
3:把EXCEL文件另存为 .CSV文件
4:用记事本把.CSV文件打开!
出来了
 
二、
set linesize 1000
set pagesize 0
set echo off
 
set termout off
set heading off
 
set feedback off
spool c:\test\try2.txt
select id||','||user_name||','||age  from us;
spool off
/
------------------------生成的txt需要掐头去尾,对超大表没法搞
 
三、使用utl_file包
 
#首先声明存储生成txt文件的目录,注意oracle要有写权限,其权限不能由自己赋给自己,必须由sysbas赋给
 
create directory DIR_DUMP as '/home/oracle/';
 
conn / as sysdba
 
grant read,write on directory dir_dump to psbc;   (或者是public;)
CREATE OR REPLACE PROCEDURE xixi
  IS
declare testjiao_handle UTL_FILE.file_type;
BEGIN
  testjiao_handle := UTL_FILE.FOPEN('DIR_DUMP','testjiao.txt','w');
    FOR x IN (SELECT * FROM TESTJIAO) LOOP
      UTL_FILE.PUT_LINE(testjiao_handle,x.ID || ',' || x.RQ ||',');
END LOOP;
EXCEPTION WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
UTL_FILE.FCLOSE(testjiao_handle);
END;
/
 
#执行发现编译未成功
 
show error
 
发现testjiao_handle UTL_FILE.file_type,已经写到命名块里了,不需要declare了
 
CREATE OR REPLACE PROCEDURE xixi
IS
testjiao_handle UTL_FILE.file_type;
BEGIN
  testjiao_handle := UTL_FILE.FOPEN('DIR_DUMP','testjiao.txt','w');
    FOR x IN (SELECT * FROM TESTJIAO) LOOP
      UTL_FILE.PUT_LINE(testjiao_handle,x.ID || ',' || x.RQ ||',');
    END LOOP;
EXCEPTION WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
UTL_FILE.FCLOSE(testjiao_handle);
END;
/
 
执行成功了
 
exec xixi
 
txt文件也生成了,但是里面没有数据。为什么?
 
因为把 Fclose写进异常里了,必须退出这个session,才会写进txt文件。
 
exit
 
发现txt有数据了
 
因为退出以后    那个  Fopen  就自动关了  否则 那个文件一直是被它打开并没有关闭
 
###还要继续完善这个存储过程,要把 Fclose 拿出来
 
###########################################################
 
CREATE OR REPLACE PROCEDURE xixi
 IS
testjiao_handle UTL_FILE.file_type;
BEGIN
  testjiao_handle := UTL_FILE.FOPEN('DIR_DUMP','testjiao.txt','w');
    FOR x IN (SELECT * FROM TESTJIAO) LOOP
      UTL_FILE.PUT_LINE(testjiao_handle,x.ID || ',' || x.RQ ||',');
    END LOOP;
      UTL_FILE.FCLOSE(testjiao_handle);
EXCEPTION WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));
END;
/
###########################################################
exec xixi
 
more testjiao.txt
1,10-NOV-09,
2,20-DEC-10,
3,15-SEP-10,
 
这次真正ok,了。
 
#可查看directory里全部定义路径
 
select * from dba_directories;
 
drop directory exp_dir;
 
最后转下
 
UTL_File的使用
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
 
本案例具体创建如下:
 
create or replace directory exp_dir as '/tmp';
 
目录创建以后,就可以把读写权限授予特定用户,具体语法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;
 
例如:
 
grant read, write on directory exp_dir to eygle;
 
此时用户eygle就拥有了对该目录的读写权限。
 
让我们看一个简单的测试:
 
SQL> create or replace directory UTL_FILE_DIR as '/opt/oracle/utl_file';
 
Directory created.
 
SQL> declare
  2    fhandle utl_file.file_type;
  3  begin
  4    fhandle := utl_file.fopen('UTL_FILE_DIR', 'example.txt', 'w');
  5    utl_file.put_line(fhandle , 'eygle test write one');
  6    utl_file.put_line(fhandle , 'eygle test write two');
  7    utl_file.fclose(fhandle);  www.2cto.com  
  8  end;
  9  /
 
PL/SQL procedure successfully completed.
 
SQL> !
[oracle@jumper 9.2.0]$ more /opt/oracle/utl_file/example.txt
eygle test write one
eygle test write two
[oracle@jumper 9.2.0]$
 
类似的我们可以通过utl_file来读取文件:
 
SQL> declare
  2    fhandle   utl_file.file_type;
  3    fp_buffer varchar2(4000);
  4  begin
  5    fhandle := utl_file.fopen ('UTL_FILE_DIR','example.txt', 'R');
  6 
  7    utl_file.get_line (fhandle , fp_buffer );
  8    dbms_output.put_line(fp_buffer );
  9    utl_file.get_line (fhandle , fp_buffer );
 10    dbms_output.put_line(fp_buffer );
 11    utl_file.fclose(fhandle);
 12  end;  www.2cto.com  
 13  /
eygle test write one
eygle test write two
 
PL/SQL procedure successfully completed.
 
可以查询dba_directories查看所有directory.
 
SQL> select * from dba_directories;
 
OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ ------------------------------
SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump
SYS                            EXP_DIR                        /opt/oracle/utl_file
 
可以使用drop directory删除这些路径.
 
SQL> drop directory exp_dir;
 
Directory dropped  www.2cto.com  
 
SQL> select * from dba_directories;
 
OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ ------------------------------
SYS                            UTL_FILE_DIR                   /opt/oracle/utl_file
SYS                            BDUMP_DIR                      /opt/oracle/admin/conner/bdump
 
 
 
摘自 zcywell的专栏

推荐阅读
  • 本文介绍如何通过创建数据库触发器来限制Oracle数据库中特定用户的登录IP地址,以增强系统的安全性。示例代码展示了如何阻止非授权IP地址的登录尝试。 ... [详细]
  • 本文探讨了在SharePoint环境中使用BDC(Business Data Catalog)时遇到的问题及其解决策略,包括XML文件导入SSP后的不可见性问题以及与远程SQL Server 2005连接的难题。 ... [详细]
  • SQL查询与事务管理:深入解析
    本文详细介绍了SQL查询的基本结构和高级特性,包括选择、分组查询以及权限控制等内容,并探讨了事务管理中的并发控制策略,旨在为数据库管理员和开发人员提供实用指导。 ... [详细]
  • PHP 图形函数中实现汉字显示的方法
    本文详细介绍了如何在 PHP 的图形函数中正确显示汉字,包括具体的步骤和注意事项,适合初学者和有一定基础的开发者阅读。 ... [详细]
  • 2023年1月28日网络安全热点
    涵盖最新的网络安全动态,包括OpenSSH和WordPress的安全更新、VirtualBox提权漏洞、以及谷歌推出的新证书验证机制等内容。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • Java连接MySQL数据库的方法及测试示例
    本文详细介绍了如何安装MySQL数据库,并通过Java编程语言实现与MySQL数据库的连接,包括环境搭建、数据库创建以及简单的查询操作。 ... [详细]
  • 本文详细介绍了如何使用SQL*Plus连接Oracle数据库以及使用MySQL客户端连接MySQL数据库的方法,包括基本命令和具体操作步骤。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文探讨了如何在SQL Server Reporting Services (SSRS)中利用TOP N功能来筛选和展示数据集中的前N条记录。通过正确的配置图表属性中的筛选器设置,可以轻松实现这一目标。 ... [详细]
author-avatar
推动茶汤_789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有