Postgresql 不支持 package功能,这给oracle 向 postgresql迁移增加了很多迁移工作。人大金仓Kingbase数据库实现了类似 oracle package 功能,并提供了许多oracle 环境下常用的package。

本篇介绍 Kingbase UTL_FILE 包。

一、create extension and directory

UTL_FILE 包是通过扩展插件的形式实现的。

  1. test=# create extension utl_file;
  2. CREATE EXTENSION
  3.  
  4. test=# create or replace directory tmp_dir as '/home/kb86/utl_tmp';
  5. CREATE DIRECTORY

注意:与oracle 不同,oracle directory 需要明确授权给用户,而 kingbase 不需要授权,且不同数据库用户可以共同写一个文件。这个个人觉得应该是权限控制不到位,后续还需完善。

二、UTL_FILE 包函数

UTL_FILE 包含的函数:

  1. test=# \dx+ utl_file;
  2. Objects in extension "utl_file"
  3. Object description
  4. ------------------------------------------------------
  5. function utl_file_fclose_all()
  6. function utl_file_fclose(integer)
  7. function utl_file_fflush(integer)
  8. function utl_file_fopen(text,text,text,integer)
  9. function utl_file_fopen(text,text,text,integer,name)
  10. function utl_file_get_line(integer)
  11. function utl_file_get_line(integer,integer)
  12. function utl_file_new_line(integer)
  13. function utl_file_new_line(integer,integer)
  14. function utl_file_put(integer,anyelement)
  15. function utl_file_put(integer,text)
  16. function utl_file_put_line(integer,text)
  17. function utl_file_put_line(integer,text,boolean)
  18. package utl_file
  19. type "utl_file.file_type"

具体函数功能如下:

UTL_FILE.FOPEN ( Location IN VARCHAR2, Filename IN VARCHAR2, Open_mode IN VARCHAR2, Max_linesize IN INT);
功能:打开一个文件,返回一个文件句柄。这里Max_linesize 表示每行最大的字节数。
Open_mode 支持以下几种:
r –只读(文本)
w – 只写(本文)。如果文件已存在,会清空原文件。
a – 追加(文本)。在文件后面添加内容。

UTL_FILE.PUT_LINE ( File IN UTL_FILE.FILE_TYPE, Buffer IN VARCHAR2, Autoflush IN BOOLEAN DEFAULT FALSE);
功能:在文件中写入一行内容,无返回值。

UTL_FILE.NEW_LINE ( File IN UTL_FILE.FILE_TYPE, Lines IN NATURAL:=1 );
功能:写入空行,无返回值。

UTL_FILE.GET_LINE ( File IN UTL_FILE.FILE_TYPE, Buffer OUT VARCHAR2, Linesize IN NUMBER, Len IN integer DEFAULT NULL);
功能:用于从已经打开的文件中读取行内容。

UTL_FILE.FCLOSE_ALL;
功能:将会关闭本次session所有打开的文件。

UTL_FILE.FFLUSH
功能:强制将缓冲的数据写入文件。

UTL_FILE.PUT
功能:写入内容到文件中,不带换行符,通常与 new_line 一起使用。

三、使用例子

例子一:

  1. create or replace procedure test_fopen(
  2. v_out_data in varchar2
  3. )
  4. as
  5. declare
  6. out_data varchar2(30000);
  7. file_handle utl_file.FILE_TYPE;
  8. file_name varchar2(1000) default 'output.txt';
  9. begin
  10. out_data := v_out_data;
  11. file_handle := utl_file.fopen('tmp_dir', file_name, 'a', 30);
  12. utl_file.put_line(file_handle, out_data);
  13. utl_file.fclose(file_handle);
  14. end test_fopen;

例子二:

  1. create or replace procedure test_get_line()
  2. as
  3. declare
  4. vinhandle utl_file.file_type;
  5. vnewline varchar2(250);
  6. begin
  7. vinhandle := utl_file.fopen('tmp_dir', 'output.txt','r');
  8. loop
  9. begin
  10. utl_file.get_line(vinhandle, vnewline);
  11. dbms_output.put_line(vnewline);
  12. exception
  13. when others then
  14. exit;
  15. end;
  16. end loop;
  17. utl_file.fclose(vinhandle);
  18. end test_get_line;

  

UTL_FILE 包使用介绍的更多相关文章

  1. Oracle之UTL_FILE 包用法详解

    [转自] http://zhangzhongjie.iteye.com/blog/1903024 UTL_FILE包可以用来读写操作系统上的文本文件,UTL_FILE提供了在客户端(FORM等等)和服 ...

  2. oracle中utl_file包读写文件操作实例学习

    在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 1.创建directory,并给用户授权 复制代码 代码如下: --创建directory create ...

  3. ORACLE之UTL_FILE包详解

    1 Utl_File包简介Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作.(1)Oracle10g之前的版本需要指定utl_file包可以操作的目录.      方法:        ...

  4. SSH框架应用中常用Jar包用途介绍

    struts2需要的几个jar包:1)xwork-core-2.1.62)struts2-core-2.1.83)ognl-2.7.34)freemarker-2.3.155)commons-io-1 ...

  5. oracle读写文件--利用utl_file包对磁盘文件的读写操作

    oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...

  6. jar包和war包的介绍和区别

    jar包和war包的介绍和区别 Java程序员的日常 关注 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介绍 JAR(Java Arc ...

  7. Wireshark wireshake数据包分割及捕包过滤器介绍

    wireshake数据包分割及捕包过滤器介绍 by:授客 QQ:1033553122 wireshake自带工具editcap分割数据包 操作: 进入到目录,然后 editcap.exe -c < ...

  8. Java中包的介绍

    包的介绍: 未命名包 命名包 可以避免类名重复 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2. ...

  9. jar包和war包的介绍和区别(转载)

    来源:https://www.jianshu.com/p/3b5c45e8e5bd 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介绍 ...

随机推荐

  1. nodeJS与MySQL实现分页数据以及倒序数据

    大家在做项目时肯定会遇到列表类的数据,如果在前台一下子展示,速度肯定很慢,那么我们可以分页展示,比如说100条数据,每10条一页,在需要的时候加载一页,这样速度肯定会变快了.那么这里我给大家介绍如何在 ...

  2. SAP FPM 相关包 APB_FPM_CORE

    related interface: APB_FPM_COREAPB_FPM_CORE_4_EXT_SCAPB_FPM_CORE_INTERNALAPB_FPM_CORE_RESTRICTED

  3. bat-命令行配置静态IP地址

    查看连接名称ipconfig 打开命令提示符,输入netsh后回车 输入interface后回车 输入ip,回车 输入set address "连接名称" static 新IP地址 ...

  4. python采集一下美团外卖数据~~

    所需知识点(https://jq.qq.com/?_wv=1027&k=Ap5XvyNN) 1.动态数据抓包演示2.json数据解析3.requests模块的使用4.保存csv 安装命令:re ...

  5. 到点了开始网抑云(悲)但是用python(整活)

    写在前面的一点网抑云: 爱情不是随便许诺好了不想再说了没错 是我那么多的冷漠 让你感觉到无比的寂寞不过 一个女人的不仅仅渴望得到的一个承诺我害怕欺骗也害怕寂寞更害怕我的心会渐渐地凋落爱情不是随便许诺好 ...

  6. List集合五种遍历方式

    一.使用Iterator接口遍历 二.普通for循环遍历 三.增强for循环遍历 四.List集合自带迭代器 五.Lambda(JDK8新增特性) //使用多态方式创建对象 List<Strin ...

  7. colab运行.py文件

    !python split_data.py

  8. VM Ware 给Centos虚拟机配置静态IP

    前言:在大家的日常运维工作中,肯定多多少少都会用到虚拟机,但是默认情况下VMware创建的虚拟机每次启动都有可能更换IP这就对我们的工作造成了一定的麻烦,下面我就给大家介绍下,如何给centos虚拟机 ...

  9. SuperSocket 1.6 创建一个简易的报文长度在头部的Socket服务器

    我们来做一个头为6位报文总长度,并且长度不包含长度域自身的例子.比如这样的Socket报文000006123456. 添加SuperSocket.Engine,直接使用Nuget搜索SuperSock ...

  10. 服务器与Ajax

    前端相关的技术点 HTML   主要用来实现页面的排版布局 CSS   主要用来实现页面的样式美化 JavaScript   主要用来实现前端功能特效 Ajax基础知识铺垫 客户端与服务器 通信协议( ...