首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用SQLPLUS假脱机到CSV格式的文件?

如何使用SQLPLUS假脱机到CSV格式的文件?
EN

Stack Overflow用户
提问于 2009-03-13 15:05:29
回答 15查看 603.8K关注 0票数 157

我想将一些查询提取为CSV输出格式。不幸的是,我不能使用任何花哨的SQL客户机或任何语言来做这件事。我必须使用SQLPLUS。

我该怎么做呢?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2017-02-15 05:55:17

如果你使用的是12.2,你可以简单地说

代码语言:javascript
复制
set markup csv on
spool myfile.csv
票数 47
EN

Stack Overflow用户

发布于 2009-03-17 15:23:33

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

代码语言:javascript
复制
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;

输出将如下所示:

代码语言:javascript
复制
    TABLE_PRIVILEGE_MAP           ,SYSTEM                        
    SYSTEM_PRIVILEGE_MAP          ,SYSTEM                        
    STMT_AUDIT_OPTION_MAP         ,SYSTEM                        
    DUAL                          ,SYSTEM 
...

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

像这样的东西可能会起作用……(我的sed技能非常生疏,所以这可能需要改进)

代码语言:javascript
复制
sed 's/\s+,/,/' myfile.csv 
票数 159
EN

Stack Overflow用户

发布于 2010-11-12 23:29:51

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

代码语言:javascript
复制
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来格式化输出文件。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/643137

复制
相关文章

相似问题

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