Oracle Trigger Spool Csv-从oracle中的select生成一个csv文件

时间:2018-12-04 11:39:14

标签: oracle

有没有一种方法可以在更新后使触发器从oracle生成CSV文件

我得到的SQL使我可以重新存储

    select 
(lower(substr(cp.fname,1,1) || translate(convert(cp.lname, 'AL32UTF8', 'UTF8'),'ón','on'))
 || ',' || 
 cpel.internal_display_name 
 || ',' || 
 cpel.org_name 
 || ',' || 
 cpel.pos_title) 
 as "login,name,dep,tit" 
 from company_pers_emp_lov cpel, company_pers cp
where cp.emp_no = cpel.emp_no and cp.emp_no like 'P%' 
ORDER BY cpel.emp_no DESC
FETCH FIRST 1 ROW ONLY

sql的重新存储为

登录名,部门,职位 xyyyyy,xxxxx yyyyy,部门,标题

1 个答案:

答案 0 :(得分:0)

我通常将Tim Hall 's Generic Solution与自定义CSV package结合使用,该自定义 <security mode="TransportCredentialOnly"> <transport clientCredentialType="Basic" /> </security> 具有过程generate,该过程将任何目录,文件名和查询作为参数并转储查询的结果使用UTL_FILE导入CSV文件。

CREATE OR REPLACE DIRECTORY EXTRACT_DIR  AS '/tmp/extracts';   --some path
GRANT READ, WRITE ON DIRECTORY EXTRACT_DIR TO <trigger_owner>; --or who executes.

然后您可以将其放入“过程/触发器”或任何需要输出到CSV文件的内容。

csv.generate('EXTRACT_DIR', 'emp.csv', p_query => 'SELECT * FROM employees');