Rainbow Planet (GT×IT×SP×SA)

本ブログではIT技術を分かりやすく簡潔にまとめ伝える事で効率的な学習の支援を目指します。

01_IT技術 (Technology) 04_PL/SQL

【PL/SQL】”UTL_FILE”パッケージを利用して”.TXT”を読み込む方法

投稿日:2017年9月17日 更新日:

今回はPL/SQLのUTL_FILEパッケージを利用して、サーバ内にあるテキストファイルを読み込むプロシージャを作成したいと思います。

■目次

>>(1)事前準備:ディレクトリオブジェクトの作成(CREATE DIRECTORY)
>>(2)事前準備:ユーザにディレクトリオブジェクトのREAD/WRITE権限を付与する
>>(3)事前準備:ユーザに”UTL_FILE”パッケージのEXECUTE権限を付与する
>>(4)コーディング
>>(5)コンパイル・実行
>>(6)結果確認

(1)事前準備:ディレクトリオブジェクトの作成(CREATE DIRECTORY)

TXTファイルを配備するディレクトリ情報を持つ”ディレクトリオブジェクト”を作成します。ディレクトリオブジェクトはPCの物理的なディレクトリを指定する事が無いよう、Oracleで別名を付けて管理するオブジェクトです。パッケージ等と同様に各種権限をGRANTして利用します。

/* CREATE DIRECTORY [オブジェクト名] AS 'ディレクトリPATH' */
CREATE DIRECTORY RBWEG_0001 AS '/tmp/plsqltest-20170916';

IT0022_00_SQLPlus_Connect
IT0022_01_DirectoryObject_Create

結果確認
IT0022_01_DirectoryObject_Create_ResultCheck
>>目次にもどる

(2)事前準備:ユーザにディレクトリオブジェクトのREAD/WRITE権限を付与する

上記(1)で付与した権限をスキーマユーザに付与します。コマンドは以下を利用します。

/* GRANT [付与したい権限名] ON DIRECTORY [オブジェクト名] TO [ユーザ名] */
GRANT READ ON DIRECTORY RBWEG_0001 TO RBWEGUSR ;
GRANT WRITE ON DIRECTORY RBWEG_0001 TO RBWEGUSR ;

IT0022_02_DirectoryObject_Grant
>>目次にもどる

(3)事前準備:ユーザに”UTL_FILE”パッケージのEXECUTE権限を付与する

次にファイル読み込みの肝となる”UTL_FILE”パッケージの実行(EXECUTE)権限を付与します。

/* GRANT [付与したい権限名] ON [オブジェクト名] TO [ユーザ名] */
GRANT EXECUTE ON UTL_FILE TO RBWEGUSR;

IT0022_03_UTLFILE_Grant
>>目次にもどる

(4)コーディング

以下はコードのサンプルです。
利用する場合はディレクトリ”/tmp/plsqltest-20170916“に”test.txt”を事前に配備しておく必要があります。

CREATE OR REPLACE
PROCEDURE TEST_FILEREAD
IS
  read utl_file.file_type;
  buf varchar2(1022);
  vDirname VARCHAR2(250);
BEGIN
  --/* Open file in 'Read Mode' */
  vDirname := 'RBWEG_0001';
  read := utl_file.fopen(vDirname,'test.txt','r');
  loop
    begin
      --/* read the file */
      utl_file.get_line(read,buf);
      dbms_output.put_line('data: '||buf);
    exception
      --/* end the loop when we come to the end of file */
      when no_data_found then
      exit;
    end;
  end loop;    
  --/* file close */
  utl_file.fclose(read);    
EXCEPTION
  WHEN OTHERS THEN
    dbms_output.put_line('ER-0000 : Other Exception');
END TEST_FILEREAD;

>>目次にもどる

(5)コンパイル・実行

テストに用いた”test.txt”の内容は以下。
IT0022_05_TestFile

コンパイル・実行
「1」のボタンが実行、「2」がコンパイルです。
IT0022_05_CompileExecute

>>目次にもどる

(6)結果確認

サンプルコードの実行結果は以下のようになります。
“test.txt”の内容が表示されています。

Connecting to the database RBWEGUSR.
data: 123
data: 456
data: 789
data: ABC
data: DEF
data: GHI
data: JKL
data: MNO
data: PQR
data: STU
data: VWX
data: YZ0
Process exited.
Disconnecting from the database RBWEGUSR.

IT0022_06_ExecuteResult

>>目次にもどる

Thanks & Regards,

Adsense審査用広告コード


Adsense審査用広告コード


-01_IT技術 (Technology), 04_PL/SQL

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

SQL Developer接続エラーへの対処(ORA-12514, ORA-12505)

SQL Developer接続エラーへの対処 今回はSQL Developerを起動し、SYSTEMユーザで接続する際に発生したエラーの対処法について記載します。 目次  >>前提条件   …

Linux基礎コマンド(第2回) ls・mkdir・cp・mv

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第2弾です!第1弾の記事はこちら(第1弾)です。 (0)目次&概説 …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その2)

目次 >概要(4.インストーラの進行) >4-1.セキュリティUpdate構成 >4-2.インストールオプション選択 >4-3.Gridインストールオプション >4-4.製品言語の選択 >4-5.デー …

Linuxサーバ(CentOS6)にOracleDB11gをインストールする(その1)

掲題の通り、LinuxにOracleDB(11g)をインストールする方法について書きます。 ■目次 >前提条件 >1.インストール要件の確認 >2.ユーザ/グループ作成 >3.Oracle DBソフト …

Linux – シェルスクリプト入門(Hello World/引数・変数/条件分岐/繰り返し処理)

シェルスクリプトの作成方法について ■目次  >>(1)シェルスクリプトとは  >>(2)シェルスクリプトでHello World  >>(3)シェルスクリプトで変 …

Top