Agora no Oracle Database 12c Release 2 podemos utilizar o comando: SET MARKUP com a opção CSV para devolver a saída dos dados no formato CSV.
Para serem eficazes, os comandos SET MARKUP que alteram valores na saída do relatório dinâmico devem ser emitidos antes da instrução que produz a saída da consulta refletindo também as configurações de DELIMITER e QUOTE se forem informadas.
O CSV é um argumento obrigatório do SET MARKUP que especifica o tipo de saída a ser gerado que é CSV. Os argumentos CSV opcionais, ON e OFF, especificam se deve ou não gerar saída CSV. O padrão é OFF.
Você pode especificar o caractere delimitador usando a opção DELIMITER e você também pode produzir texto sem aspas usando QUOTE OFF.
Vamos pegar uma consulta simples, como a abaixo:
[oracle@serv01 ~]$ sqlplus / as sysdba SQL*Plus: Release 12.2.0.1.0 Production on Wed Aug 1 15:40:37 2018 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> col username format a30 col account_status format a20 select user_id, username, account_status from dba_users where account_status = 'OPEN'; USER_ID USERNAME ACCOUNT_STATUS ---------- ------------------------------ -------------------- 0 SYS OPEN 9 SYSTEM OPEN SQL>
Agora vamos devolver o resultado no formato CSV, ativando com set markup csv on:
SQL> set markup csv on
SQL> col username format a30
col account_status format a20
select user_id, username, account_status from dba_users where account_status = 'OPEN';
"USER_ID","USERNAME","ACCOUNT_STATUS"
0,"SYS","OPEN"
9,"SYSTEM","OPEN"
SQL>
Veja abaixo que podemos também retirar as aspas da coluna username e account_status com a opção QUOTE OFF e também podemos informar um delimitador de dados/colunas com a opção DEMILITER que neste caso informamos |:
SQL> set markup csv on quote off
SQL> set markup csv on delimiter |
SQL> col username format a30
col account_status format a20
select user_id, username, account_status from dba_users where account_status = 'OPEN';
USER_ID|USERNAME|ACCOUNT_STATUS
0|SYS|OPEN
9|SYSTEM|OPEN
SQL>
Maiores informações:
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqpug/generating-HTML-reports-from-SQL-Plus.html#GUID-1743F2F2-EBF3-48F7-9620-4F72B8988335
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqpug/SET-system-variable-summary.html#GUID-0AA910C4-C22A-4A9E-BE13-AAA059CC7919
Ronaldo
Nenhum comentário:
Postar um comentário