为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用SQLPLUS对CSV格式化文件进行后台处理?

如何使用SQLPLUS对CSV格式化文件进行后台处理?

忽然笑 2019-07-19 15:34:04
如何使用SQLPLUS对CSV格式化文件进行后台处理?我想将一些查询提取为CSV输出格式。不幸的是,我不能使用任何花哨的SQL客户端或任何语言来完成它。我必须使用SQLPLUS。我该怎么做?
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您也可以使用以下内容,尽管它确实在字段之间引入了空格。


set colsep ,     -- separate columns with a comma

set pagesize 0   -- No header rows

set trimspool on -- remove trailing blanks

set headsep off  -- this may or may not be useful...depends on your headings.

set linesize X   -- X should be the sum of the column widths

set numw X       -- X should be the length you want for numbers (avoid scientific notation on IDs)


spool myfile.csv


select table_name, tablespace_name 

  from all_tables

 where owner = 'SYS'

   and tablespace_name is not null;

产出如下:


    TABLE_PRIVILEGE_MAP           ,SYSTEM                        

    SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        

    STMT_AUDIT_OPTION_MAP         ,SYSTEM                        

    DUAL                          ,SYSTEM 

...

这将比键入所有字段并将它们与逗号连接起来要简单得多。如果需要,可以使用一个简单的sed脚本来删除逗号前面的空格。


像这样的东西可能有用.(我的sed技能很生疏,所以这可能需要工作)


sed 's/\s+,/,/' myfile.csv 


查看完整回答
反对 回复 2019-07-19
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我将此命令用于提取维度表(DW)数据的脚本。因此,我使用以下语法:


set colsep '|'

set echo off

set feedback off

set linesize 1000

set pagesize 0

set sqlprompt ''

set trimspool on

set headsep off


spool output.dat


select '|', <table>.*, '|'

  from <table>

where <conditions>


spool off

而且起作用了。我不使用sed格式化输出文件。


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 546 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信