首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在psql中等效的Sql +

在psql中等效的Sql +
EN

Database Administration用户
提问于 2021-10-25 11:40:06
回答 1查看 1.1K关注 0票数 -1

我的任务是将一些代码从sqlplus迁移到oracle中的psql,我有一个bash脚本,它可以执行一个存储过程,并根据结果调用一个sqlplus,这个sqlplus会将多个文件从数据库中转储出来:我对如何在postgres中这样做感到非常困惑。

一个例子

代码语言:javascript
复制
column nomreg noprint new_value  _nomregion
column noreg noprint new_value  Numreg
Select nomreg,noreg From    schema.table;
column numvers noprint new_value _numvers
column datvers noprint new_value _datvers
Select numvers, datvers From schema.table;
Column Dat1 noprint new_value EchM
Column Dat2 noprint new_value EchM_1
Select To_char(Datproech,'YYYYMM') Dat1 from schema.table;
Select NVL(To_char(Min(Datproech),'YYYYMM'),'&EchM') Dat1 from schema.table
 where Substr('&EchM',1,4)='1900';
Select To_Char(Add_months(To_Date('&EchM','YYYYMM'),-1),'YYYYMM') Dat2 from Dual;

set linesize 250
set verify off
Spool &1/Mailing_SPP_&NumReg..lst
select distinct a.Numben|| ' ' ||a.CleBen,'|',a.NumNir||' '||a.CleNir,'|',Rpad(a.Civilite,4,' '),'|',Rpad(LTRIM(RTRIM(UPPER(a.NomPre)))
 ||' '|| LTRIM(RTRIM(UPPER(a.Prenom))),40,' '),'|',Rpad(NVL(a.Adr1F,a.Adr1E),32,' '),'|',Rpad(NVL(a.Adr2F,a.Adr2E),32,' '),'|',
 Rpad(NVL(a.Adr3F,a.CodPosE||' '||a.VilE),32,' '),'|',NVL(a.CodPosF,'     '),'|',Rpad(NVL(a.VilF,a.Pays),26,' '),'|','     '
  FROM AMIAN.tben a, AMIAN.tpaie b where a.numben=b.numben and b.perpai=a.dat1pai and
 To_Char(b.datpai,'YYYYMM')='&EchM' order by 1;
Spool off

在同一个文件中

代码语言:javascript
复制
ttitle CE '-----  Contenu of table TABLE  -----' skip
spool &1/tbil_pla 
set linesize  80
clear breaks
clear computes
column DatProech heading 'Monthy paiments'
column MontPaye heading '  Total payments  '
column Montpaye format B999999999999.99
column NbAlloc heading 'Nbre Allocataires'
column NbPai heading 'Nbre Paiements'
column Nbmen heading 'Nbre of months'
column today noprint new_value datejour
ttitle left _nomregion skip 2 -
ttitle left 'Edition  ' datejour skip 1 -
ttitle left 'Application MYAPPLICATION ' _numvers ' de ' _datvers skip 1 -
center 'HEADER HEADER' skip 1 -
center '=============================' skip 2
select Sysdate Today,DatProech,MontPaye,NbAlloc,NbPai,Nbmen from EXPLOIT.TBIL;
ttitle off
column DatProech heading 'monthly paiments'
column MontavaPay heading 'accounts'
column Montavapay format B999999999999.99
column NbavaAlloc heading 'Nbre beneficiaries'
column NbavaPai heading 'Number of payments'
column Nbavamen heading 'Number of months'
select Sysdate Today,DatProech,Montavapay,NbavaAlloc,NbavaPai,Nbavamen from Schema.table;
spool off 

我知道这个问题还不够清楚,所以总的来说:

如何在psql中对导出文件进行批处理,或者使用过程和Orafce的UTL_File会更好吗?

2-如何使用psql‘对齐文本、对齐文本、控制列之间的空格来格式化报告

EN

回答 1

Database Administration用户

发布于 2021-10-25 13:54:22

  1. 您可以使用psql's \copy命令将数据导出到客户端文件。
  2. psql没有提供对齐输出和格式化输出的方法,但是psql一开始就很好地对齐了输出,所以在获得可读的输出方面不会遇到与SQL*Plus一样的麻烦。为了满足高级需求,您可以使用\pset format html\pset format latex编写这些格式的输出。然后,您可以使用CSS或将报表包含在Latex文件中,以获得良好的格式。
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/301621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档