PLSQLが大量のクエリ結果をエクスポートの方法

PL/SQLではカーソルを使用して大量のクエリー結果を処理し、結果をファイルに出力できます。 以下に例を示します。 1. クエリー結果を格納するためのCursorを作成します。

DECLARE

CURSOR c_query IS

 

SELECT column1, column2, … FROM table_name;

 

– 这里的column1, column2, …是你想要查询和导出的列名

 

– table_name是你想要查询的表名


カーソルを開いて結果をファイルに保存します:

 v_file UTL_FILE.FILE_TYPE;

 

v_output VARCHAR2(4000); BEGIN

 

v_file := UTL_FILE.FOPEN(‘DIRECTORY_NAME’, ‘OUTPUT_FILE.txt’, ‘W’);

 

– DIRECTORY_NAME是你的数据库目录对象的名称,用于指定保存结果文件的目录

 

– OUTPUT_FILE.txt是保存结果的文件名

 

FOR r IN c_query LOOP

 

v_output := r.column1 || ‘,’ || r.column2 || …;

 

– 这里的column1, column2, …是你查询结果的列名,在这里将它们拼接成一个逗号分隔的字符串

 

UTL_FILE.PUT_LINE(v_file, v_output);

 

END LOOP;

 

UTL_FILE.FCLOSE(v_file); END;


指定したファイルに出力しようとすると動作しますが、小さなクエリ結果に適しています。クエリ結果が大きいと、メモリオーバーまたはパフォーマンスの問題が生じる可能性があります。大量データを処理する場合は、BULK COLLECTやFORALLといったPL/SQLパッケージ内の手段を使用することが推奨されます。

bannerAds