zoukankan      html  css  js  c++  java
  • 怎样运用Oracle的BFILE

      泉源:CSDN




    怎样运用Oracle的BFILE
    1.树立响应的directory
    运器具有充裕权限的用处树立directory,具体参考:Using Create directory & UTL_FILE in Oracle
    create or replace directory BFILE_DIR as
    '/home/oracle/bfiletest';

    [oracle@ts01 bfiletest] $ sqlplus '/ as sysdba'

    SQL*Plus: Release 9.2.0.6.0 - Production on Mon Jan 23 10:54:17 2006

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


    Connected to:
    Oracle9i Enterprise Edition Release 9.2.0.6.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.6.0 - Production

    SQL> show parameter utl_file_dir   AV女伶AV女伶AV女伶AV女伶AV女伶9.2最先,已经废弃了这个参数

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    utl_file_dir                         string
    SQL>
    SQL> create or replace directory BFILE_DIR as
      2  '/home/oracle/bfiletest';

    Directory created.

    Elapsed: 00:00:00.05
    SQL>
    SQL> col DIRECTORY_PATH for a50
    SQL> select * from dba_directories;

    OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
    ------------------------------ ------------------------------ --------------------------------------------------
    SYS                            MEDIA_DIR                      /oracle/product/920/demo/schema/product_media/
    SYS                            LOG_FILE_DIR                   /oracle/admin/TSMISC02/create/
    SYS                            DATA_FILE_DIR                  /oracle/product/920/demo/schema/sales_history/
    SYS                            KU $_STYLESHEET_DIR             /oracle/product/920/rdbms/xml/xsl
    SYS                            BFILE_DIR                      /home/oracle/bfiletest

    Elapsed: 00:00:00.01
    SQL>

     

    2.给响应的用户受权
    grant read on directory BFILE_DIR  to lunar;

    SQL> grant read on directory BFILE_DIR  to lunar;

    Grant succeeded.

    Elapsed: 00:00:00.04
    SQL>
     

    3.反省响应的文件能否存在
    host ls -l /home/oracle/bfiletest/bfiletest_file.txt

    SQL> host ls -l /home/oracle/bfiletest/bfiletest_file.txt
    -rw-r--r--    1 root     root          349 Oct 31  2003 /home/oracle/bfiletest/bfiletest_file.txt

    SQL>
     

    4.数据操纵
    BFILENAME函数的语法如下:BFILENAME('directory','filename')
    该函数用畴前往一个BFILE文件职位中间指针,指针和文件零碎上的LOB binary文件关连联。
    'directory' 是途径名,议决create directory体式格局树立。 'filename' 是文件零碎上的文件称号
    在你在SQL,PL/SQL年夜约DBMS_LOG包,年夜约OCI中运用BFILENAME函数之前,你必须树立响应的directory并且关联响应的物理文件.
    以下是一个示例:
      CREATE DIRECTORY media_dir AS '/demo/schema/product_media';
      create table lunar_test (product_id number, ad_id number, ad_graphic bfile );
      INSERT INTO print_media (product_id, ad_id, ad_graphic)
         VALUES (3000, 31001, bfilename('MEDIA_DIR', 'modem_comp_ad.gif'));
      参考:Oracle9i SQL Reference Release (9.2) Part Number A96540-02

    再比方:
      SQL> connect lunar/lunar
      create table lunar_test (id number, bfiles bfile );
      
      insert into lunar_test values ( 1, bfilename ( 'BFILE_DIR', 'bfiletest_file.txt' ) );
      
      SQL> connect lunar/lunar
      Connected.
      SQL> create table lunar_test (id number, bfiles bfile );
      
      Table created.
      
      Elapsed: 00:00:00.03
      SQL> insert into lunar_test values ( 1, bfilename ( 'BFILE_DIR', 'bfiletest_file.txt' ) );
      
      1 row created.
      
      Elapsed: 00:00:00.00
      SQL> commit;
      
      Commit complete.
      
      Elapsed: 00:00:00.00
      SQL>

     

    declare                                                                           
      fhandle utl_file.file_type;                                                     
    begin                                                                             
      fhandle := utl_file.fopen('BFILE_DIR', 'lunartest1.txt', 'w');                  
      utl_file.put_line(fhandle , 'aaa');                            
      utl_file.put_line(fhandle , 'bbb');                            
      utl_file.fclose(fhandle);                                                       
    end;                                                                              
    /                                                                                 


    declare                                                                       
      fhandle   utl_file.file_type;                                               
      fp_buffer varchar2(4000);                                                   
    begin                                                                         
      fhandle := utl_file.fopen ('BFILE_DIR','lunartest1.txt', 'R');              
                                                                                  
      utl_file.get_line (fhandle , fp_buffer );                                   
      dbms_output.put_line(fp_buffer );                                           
      utl_file.get_line (fhandle , fp_buffer );                                   
      dbms_output.put_line(fp_buffer );                                           
      utl_file.fclose(fhandle);                                                   
    end;                                                                          
    /        




    版权声明: 原创作品,允许转载,转载时请务必以超链接体式格局标明文章 原始来因 、作者信息和本声明。不然将究查法律责任。

  • 相关阅读:
    坐火车/长途汽车去
    图书管理系统设计
    电梯演说模板练习
    敏捷开发
    团队形式
    android app demo
    classic code review
    code review
    阅读思考
    单元测试
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1976122.html
Copyright © 2011-2022 走看看