- 浏览: 34401 次
- 性别:
- 来自: 上海
最新评论
CREATE or replace DIRECTORY READ_FILE_DIR AS 'D:\abc\'; -- 要手动创建abc目录
select * from dba_directories;
grant read,write on directory READ_FILE_DIR to PUBLIC; --当前用户给其他用户赋权限
create or replace procedure lfz_utl_file_pro as
l_file utl_file.file_type;
cursor c_lifztest_analyse3 is select * from lifztest_analyse3;
BEGIN
l_file := utl_file.fopen('READ_FILE_DIR', 'aaa.TXT', 'W');--READ_FILE_DIR要大写 'aaa.TXT' 自动创建
for r_c_lifztest_analyse3 in c_lifztest_analyse3 loop
utl_file.put_line(l_file,r_c_lifztest_analyse3.hphm1);
end loop;
utl_file.fclose(l_file);
END;
r -- read text
w -- write text
a -- append text
rb -- read byte mode
wb -- write byte mode
ab -- append byte mode
第一步:以管理员用户登陆
如:conn sys/password@sid as sysdba
第二步:设置可操作目录
需要指定utl_file包可以操作的目录。在oracle 10g以前,可以用以下方法:
1、alter system set utl_file_dir='e:/utl' scope=spfile;
2、在init.ora文件中,配置如下:
UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl
在oracle 10g中建议用以下方法配置:CREATE DIRECTORY utl AS 'E:/utl';
参见oracle online:
In the past, accessible directories for the UTL_FILE functions were specified in the initialization file using the UTL_FILE_DIR parameter. However, UTL_FILE_DIR access is not recommended. It is recommended that you use the CREATE DIRECTORY feature, which replaces UTL_FILE_DIR. Directory objects offer more flexibility and granular control to the UTL_FILE application administrator, can be maintained dynamically (that is, without shutting down the database), and are consistent with other Oracle tools. CREATE DIRECTORY privilege is granted only to SYS and SYSTEM by default.
第三步:授权给指定用户,以便执行utl_file
GRANT EXECUTE ON utl_file TO scott;
第四步:conn scott/tiger
就可以正常使用utl_file了。
摘要:本文主要讨论如何利用Oracle的UTL_FILE包来实现对磁盘文件的I/O操作。
文件I/O对于数据库的开发来说显得很重要,比如如果数据库中的一部分数据来自于磁盘文件,
那么就需要使用I/O接口把数据导入到数据库中来。在 PL/SQL中没有直接的I/O接口,
一般在调试程序时可以使用Oracle自带的DBMS_OUTPUT包的put_line函数(即向屏幕进行I/O 操作)即可,
但是对于磁盘文件的I/O操作它就无能为力了。其实Oracle同样也提供了可以进行文件I/O的实用包-----UTL_FILE包,
利用这个实用包提供的函数来实现对磁盘的I/O操作。
1. 准备工作
由于Oracle数据库对包创建的目录有一个安全管理的问题,所以并不是所有的文件目录能够被UTL_FILE包所访问,
要更新这种目录设置,就得到init.ora里将UTL_FILE_DIR域设置为*,这样UTL_FILE包就可以对所有的目录文件进行访问了。
2. 文件I/O的实施
UTL_FILE包提供了很多实用的函数来进行I/O操作,主要有以下几个函数:
fopen
打开指定的目录路径的文件。
get_line
获取指定文件的一行的文本。
put_line
向指定的文件写入一行文本。
fclose
关闭指定的文件。
下面利用这些函数,实现从文件取数据,然后将数据写入到相应的数据库中。
create or replace procedure loadfiledata(p_path varchar2,p_filename varchar2) as
v_filehandle utl_file.file_type; --定义一个文件句柄
v_text varchar2(100); --存放文本
v_name test_loadfile.name%type;
v_addr_jd test_loadfile.addr_jd%type;
v_region test_loadfile.region%type;
v_firstlocation number;
v_secondlocation number;
v_totalinserted number;
begin
if (p_path is null or p_filename is null) then
goto to_end;
end if;
v_totalinserted:=0;
/*open specified file*/
v_filehandle:=utl_file.fopen(p_path,p_filename,'r');
loop
begin
utl_file.get_line(v_filehandle,v_text);
exception
when no_data_found then
exit;
end ;
v_firstlocation:=instr(v_text,',',1,1);
v_secondlocation:=instr(v_text,',',1,2);
v_name:=substr(v_text,1,v_firstlocation-1);
v_addr_jd:=substr(v_text,v_firstlocation+1,v_secondlocation-v_firstlocation-1);
v_region:=substr(v_text,v_secondlocation+1);
/*插入数据库操作*/
insert into test_loadfile
values (v_name,v_addr_jd,v_region);
commit;
end loop;
<<to_end>>
null;
end loadfiledata;
可以不用在init.ora中改的
只要用管理员的权限登陆,执行:
create directory UTL_FILE_TEST as '/*'
应该就可以了,不用新启动oracle的
不过其他用户要使用此目录要授权的
/
grant create any directory to scott;
grant create any library to scott;
create or replace directory utllobdir as 'C:/ep';
在initsid.ora文件中,加入或修改
设置utl_file_dir的要点:
1。 utl_file_dir=* 这表示你能操作任何目录,尽量不要用
2。 utl_file_dir=d:/ 这表示你能操作d:/目录下的文件,但你不能操作d:/目录下的子目录
3。注意在设置
utl_file_dir=路径时,如果路径是长路径名,例如c:/my temp目录,则你必须加上'',例如:
utl_file_dir='c:/my temp'
4。utl_file_dir可以是多个路径
utl_file_dir=c:/,d:/,d:/temp,'c:/my temp'
5。设置完必须重新启动数据库
from http://blog.csdn.net/oracle_microsoft/article/details/2030204
(2)spool 在命令行中执行
set trimspool on
set linesize 550
set pagesize 2000
set newpage 1
set heading off
set term off
spool sp_test.txt
select xh||'|'||hphm1||'|'||hpzl1||'|'||ccdjrq1 from lifztest_analyse3;
spool off
(3) 生成csv xls
C:\Documents and Settings\Administrator>sqlplus js_fjfl/js_fjfl@fjflzx
SQL> set linesize 200
SQL> set term off verify off feedback off pagesize 999
SQL> set markup html on entmap ON spool on preformat off
SQL> spool d:\tables.xls
<br>
SQL> @d:\fjflzxtofjflww\bai.sql
<br>
spool off
select * from dba_directories;
grant read,write on directory READ_FILE_DIR to PUBLIC; --当前用户给其他用户赋权限
create or replace procedure lfz_utl_file_pro as
l_file utl_file.file_type;
cursor c_lifztest_analyse3 is select * from lifztest_analyse3;
BEGIN
l_file := utl_file.fopen('READ_FILE_DIR', 'aaa.TXT', 'W');--READ_FILE_DIR要大写 'aaa.TXT' 自动创建
for r_c_lifztest_analyse3 in c_lifztest_analyse3 loop
utl_file.put_line(l_file,r_c_lifztest_analyse3.hphm1);
end loop;
utl_file.fclose(l_file);
END;
r -- read text
w -- write text
a -- append text
rb -- read byte mode
wb -- write byte mode
ab -- append byte mode
第一步:以管理员用户登陆
如:conn sys/password@sid as sysdba
第二步:设置可操作目录
需要指定utl_file包可以操作的目录。在oracle 10g以前,可以用以下方法:
1、alter system set utl_file_dir='e:/utl' scope=spfile;
2、在init.ora文件中,配置如下:
UTL_FILE=E:/utl或者UTL_FILE_DIR=E:/utl
在oracle 10g中建议用以下方法配置:CREATE DIRECTORY utl AS 'E:/utl';
参见oracle online:
In the past, accessible directories for the UTL_FILE functions were specified in the initialization file using the UTL_FILE_DIR parameter. However, UTL_FILE_DIR access is not recommended. It is recommended that you use the CREATE DIRECTORY feature, which replaces UTL_FILE_DIR. Directory objects offer more flexibility and granular control to the UTL_FILE application administrator, can be maintained dynamically (that is, without shutting down the database), and are consistent with other Oracle tools. CREATE DIRECTORY privilege is granted only to SYS and SYSTEM by default.
第三步:授权给指定用户,以便执行utl_file
GRANT EXECUTE ON utl_file TO scott;
第四步:conn scott/tiger
就可以正常使用utl_file了。
摘要:本文主要讨论如何利用Oracle的UTL_FILE包来实现对磁盘文件的I/O操作。
文件I/O对于数据库的开发来说显得很重要,比如如果数据库中的一部分数据来自于磁盘文件,
那么就需要使用I/O接口把数据导入到数据库中来。在 PL/SQL中没有直接的I/O接口,
一般在调试程序时可以使用Oracle自带的DBMS_OUTPUT包的put_line函数(即向屏幕进行I/O 操作)即可,
但是对于磁盘文件的I/O操作它就无能为力了。其实Oracle同样也提供了可以进行文件I/O的实用包-----UTL_FILE包,
利用这个实用包提供的函数来实现对磁盘的I/O操作。
1. 准备工作
由于Oracle数据库对包创建的目录有一个安全管理的问题,所以并不是所有的文件目录能够被UTL_FILE包所访问,
要更新这种目录设置,就得到init.ora里将UTL_FILE_DIR域设置为*,这样UTL_FILE包就可以对所有的目录文件进行访问了。
2. 文件I/O的实施
UTL_FILE包提供了很多实用的函数来进行I/O操作,主要有以下几个函数:
fopen
打开指定的目录路径的文件。
get_line
获取指定文件的一行的文本。
put_line
向指定的文件写入一行文本。
fclose
关闭指定的文件。
下面利用这些函数,实现从文件取数据,然后将数据写入到相应的数据库中。
create or replace procedure loadfiledata(p_path varchar2,p_filename varchar2) as
v_filehandle utl_file.file_type; --定义一个文件句柄
v_text varchar2(100); --存放文本
v_name test_loadfile.name%type;
v_addr_jd test_loadfile.addr_jd%type;
v_region test_loadfile.region%type;
v_firstlocation number;
v_secondlocation number;
v_totalinserted number;
begin
if (p_path is null or p_filename is null) then
goto to_end;
end if;
v_totalinserted:=0;
/*open specified file*/
v_filehandle:=utl_file.fopen(p_path,p_filename,'r');
loop
begin
utl_file.get_line(v_filehandle,v_text);
exception
when no_data_found then
exit;
end ;
v_firstlocation:=instr(v_text,',',1,1);
v_secondlocation:=instr(v_text,',',1,2);
v_name:=substr(v_text,1,v_firstlocation-1);
v_addr_jd:=substr(v_text,v_firstlocation+1,v_secondlocation-v_firstlocation-1);
v_region:=substr(v_text,v_secondlocation+1);
/*插入数据库操作*/
insert into test_loadfile
values (v_name,v_addr_jd,v_region);
commit;
end loop;
<<to_end>>
null;
end loadfiledata;
可以不用在init.ora中改的
只要用管理员的权限登陆,执行:
create directory UTL_FILE_TEST as '/*'
应该就可以了,不用新启动oracle的
不过其他用户要使用此目录要授权的
/
grant create any directory to scott;
grant create any library to scott;
create or replace directory utllobdir as 'C:/ep';
在initsid.ora文件中,加入或修改
设置utl_file_dir的要点:
1。 utl_file_dir=* 这表示你能操作任何目录,尽量不要用
2。 utl_file_dir=d:/ 这表示你能操作d:/目录下的文件,但你不能操作d:/目录下的子目录
3。注意在设置
utl_file_dir=路径时,如果路径是长路径名,例如c:/my temp目录,则你必须加上'',例如:
utl_file_dir='c:/my temp'
4。utl_file_dir可以是多个路径
utl_file_dir=c:/,d:/,d:/temp,'c:/my temp'
5。设置完必须重新启动数据库
from http://blog.csdn.net/oracle_microsoft/article/details/2030204
(2)spool 在命令行中执行
set trimspool on
set linesize 550
set pagesize 2000
set newpage 1
set heading off
set term off
spool sp_test.txt
select xh||'|'||hphm1||'|'||hpzl1||'|'||ccdjrq1 from lifztest_analyse3;
spool off
(3) 生成csv xls
C:\Documents and Settings\Administrator>sqlplus js_fjfl/js_fjfl@fjflzx
SQL> set linesize 200
SQL> set term off verify off feedback off pagesize 999
SQL> set markup html on entmap ON spool on preformat off
SQL> spool d:\tables.xls
<br>
SQL> @d:\fjflzxtofjflww\bai.sql
<br>
spool off
发表评论
-
修改oracle 指定用户密码 不过期
2015-02-28 10:48 446(1) 查询用户所在的profileselect user ... -
解决PLSQL报错"动态执行表不可访问,本会话的自动统计被禁止"
2014-08-25 00:54 490grant select on v_$statname to ... -
oralce spool
2014-01-05 22:46 0spool常用的设置 set colsep' '; / ... -
oracle sql 优化
2013-11-19 13:28 482(1)like 和substri效率 没有索引的 l ... -
oracle表空间
2013-10-31 11:03 320(1)--查看表大小,属于哪个哪表空间 SELECT BY ... -
oracle常用命令
2013-06-20 23:20 3471条件运算符号 (1 ... -
uinion all union minus intersect
2013-06-19 00:25 877lifztest2 1 441 1111441 ... -
oracle plsql 常用命令
2013-04-24 21:20 6721 查看oracle的版本信息 (1)用客户端连接到数据库 ... -
去掉制定字符,再连接查询 oralce sql
2013-02-22 16:40 0select hphm, sfzmhm from a wher ... -
数据库驱动下载地址
2012-10-15 13:58 584(1)sql sever驱动 http://msdn.mic ...
相关推荐
本教程将重点关注如何在C#的WinForm应用中操作SQL Server数据库,并实现Excel(xls)、CSV和TXT文件的导入导出功能。这在数据处理、报表生成以及数据交换等场景中非常实用。 首先,要与SQL Server进行交互,你需要...
在许多场景下,我们需要将Oracle数据库中的数据导出到Excel(XLS)文件,以便进行数据分析、报告生成或与非Oracle系统的数据交换。本篇文章将详细讲解如何编写一个Oracle脚本来实现这个功能。 首先,让我们了解...
该工具的核心功能在于其支持多种数据格式之间的转换,包括Oracle数据库、SQL Server数据库、DBF文件(通常与FoxPro或dBase相关联)、Excel电子表格以及CSV(逗号分隔值)文件。这些格式涵盖了广泛的数据存储和交换...
TOAD不仅支持Excel导入导出,还支持多种数据格式,如CSV、TXT等。此外,它还具备SQL脚本编辑、执行、调试以及数据库对象管理等多种功能,大大提高了数据库管理员和开发人员的工作效率。 总之,Oracle数据库配合TOAD...
将 SELECT 语句的查询结果显示在工作表,可以直接对查询结果进行再操作,如 修改、插入行、删除行、提 交(将表格中的数据改变写入相应的数据库表中)、多功能拷贝、将选择的单元格数据导出为 XLS /CSV /INSERT SQL ...
4. **数据导入导出**:从CSV、Excel等格式导入数据,或将数据库数据导出到文件。 5. **性能分析**:通过SQL分析器和调优顾问检查SQL性能,优化查询。 6. **数据库对象管理**:创建、修改和删除数据库对象,如表、...
将 SELECT 语句的查询结果显示在工作表,可以直接对查询结果进行再操作,如 修改、 插入行、删除行、提交(将表格中的数据改变写入相应的数据库表中)、多功能拷贝、将选 择的单元格数据导出为 XLS /CSV /INSERT SQL...
3. **jasperreports 5.6.0**:JasperReports 是一个开源的报告生成库,它可以生成 PDF、HTML、XLS、CSV、XML 和其他格式的报表。jasperreports 5.6.0 版本在该集成实例中用于生成Excel文件,但需要注意的是,该版本...
文件上传功能支持xls和csv格式,用户可以方便地选择对应的Oracle数据表,并设置Excel列与数据表字段的对应关系。如果表格涉及分级,用户需要指定分级编码列并设定编码格式。 最后,工具在导入数据时如果遇到错误,...
它支持各种数据源,包括Oracle数据库、XML和CSV文件等,允许用户通过直观的界面设计报表,并通过灵活的布局和格式选项来定制输出。在Oracle Reports Release 6i版本中,开发者可以学习并掌握一系列关键技能,从而...
该资源提供了四个不同格式的版本:SQL、JSON、CSV和XLS,以满足不同软件和开发需求。 1. **SQL格式**: SQL格式的数据通常是数据库管理系统(DBMS)使用的,如MySQL、Oracle或SQL Server。在SQL文件中,这些行政...
在IT领域,Excel和Oracle数据库之间的数据交互是一个常见的任务,特别是在数据分析、报表生成以及数据迁移等场景中。本文将详细探讨如何将Excel文件导入Oracle数据库,以及如何将Oracle数据库中的数据导出到Excel...
2. **PL/SQL生成CSV**:可以编写PL/SQL过程,将数据库查询结果转换成CSV格式的字符串,然后保存到磁盘上,这个文件可以直接被Excel打开。 3. **Spooling技术**:Oracle SQL*Plus中的Spool命令可以将查询结果直接...
数据集分为sql、json、csv和xls四种格式,适应不同的数据处理需求。 首先,SQL格式的数据通常用于存储结构化的数据,适合于数据库管理系统,例如MySQL、Oracle等。在这个数据集中,SQL文件可能包含了表结构和预定义...
Oracle的UTL_FILE包提供了一种简单的方法来读写文本文件,包括CSV格式的文件,可以模拟Excel数据。例如,描述中的代码片段展示了如何用UTL_FILE创建一个简单的Excel(XLS)文件。首先声明一个文件句柄,然后打开...
PowerBuilder支持通过ODBC(Open Database Connectivity)与Oracle数据库交互,允许开发者编写SQL语句来获取表结构信息,包括字段名、数据类型以及注释等,并可以将这些信息导出为各种格式,如CSV、XML或者Excel。...
PdmReader也是连接oracle,sql server,access等数据库并提供实用辅助功能的客户端工具(ado方式连接数据库),比如SQL脚本导出,excel,word,html,xls,txt文件导出等。 如果您或者您所在公司在数据库开发中使用...
2. **jasperreport**:这是iReport的基础,是一个开源的报表生成库,用于生成PDF、HTML、XLS、CSV等多种格式的报表。 3. **数据库连接ORACL**:这里提到了Oracle数据库,Oracle是大型企业级数据库系统,用于存储和...
PdmReader也是连接oracle,sql server,access等数据库并提供实用辅助功能的客户端工具(ado方式连接数据库),比如SQL脚本导出,excel,word,html,xls,txt文件导出等。 如果您或者您所在公司在数据库开发中使用...