UTL_FILE
の使用方法を学ぶ 表からOraclePL/SQLのCSVファイルにデータをエクスポートするパッケージ。
Oracleでは、パッケージUTL_FILE
テキストファイルを書き込むための多くの手順と関数が含まれています。以下は、構文の詳細とファイルを作成するために必要な手順です。
UTL_FILEを使用してファイルを書き込むための構文と手順
-- Declare a variable to store file type n_file UTL_FILE.FILE_TYPE; -- Open the file in Begin section, it will open the file and return the file handle into the variable n_file n_file := UTL_FILE.FOPEN('DIR_OBJ', 'YourCSVFileName.csv', 'w', 4000); -- Write a single or multiple lines UTL_FILE.PUT_LINE(n_file, 'abc, xyz, xxx'); -- Close the file UTL_FILE.FCLOSE(n_file);を閉じます
基本的な例
Declare n_file Utl_File.File_Type; Begin -- The directory object MY_DIR must be exist or create a new one n_file := Utl_File.Fopen('MY_DIR', 'myfile.csv', 'w', '4000'); Utl_File.Put_Line(n_file, 'First line.'); Utl_File.Put_Line(n_file, 'Second line.'); Utl_File.Put_Line(n_file, 'Third line.'); Utl_File.Fclose(n_file); End;
上記の例で述べたように、ディレクトリオブジェクトMY_DIR
存在する必要があります。 Oracleのディレクトリオブジェクトは、サーバー上の物理ディレクトリへの参照です。以下は、Oracleでディレクトリオブジェクトを作成する例です。
-- Windows example CREATE OR REPLACE DIRECTORY CSVDIR AS 'd:\oracle\csvfiles'; -- Linux example CREATE OR REPLACE DIRECTORY CSVDIR AS '/usr1/oracle/csvfiles';
Oracleのディレクトリオブジェクトの詳細については、このリンクを確認してください。
Oracleの例でテーブルからCSVにデータをエクスポートする
以下は、EMPテーブルからCSVファイルにデータをエクスポートするOracleのストアドプロシージャの例です。
Create Or Replace Procedure exp_emp_data Is n_file utl_file.file_type; v_string Varchar2(4000); -- get the data using cursor Cursor c_emp Is Select empno, ename, deptno, sal, comm From emp; Begin n_file := utl_file.fopen('CSVDIR', 'empdata.csv', 'w', 4000); -- if you do not want heading then remove below two lines v_string := 'Emp Code, Emp Name, Dept, Salary, Commission'; utl_file.put_line(n_file, v_string); -- open the cursor and concatenate fields using comma For cur In c_emp Loop v_string := cur.empno || ',' || cur.ename || ',' || cur.deptno || ',' || cur.sal || ',' || cur.comm; -- write each row utl_file.put_line(n_file, v_string); End Loop; -- close the file utl_file.fclose(n_file); Exception When Others Then -- on error, close the file if open If utl_file.is_open(n_file) Then utl_file.fclose(n_file); End If; End;
これでストアドプロシージャが作成されました。それを実行してデータをエクスポートします。
Begin exp_emp_data; End;
関連チュートリアル:
- ユーティリティ:テーブルからデータをエクスポートするためのPL/SQLプロシージャを生成する