我想将一些查询提取为 CSV 输出格式。不幸的是,我无法使用任何奇特的 SQL 客户端或任何语言来做到这一点。我必须使用 SQLPLUS。
我该怎么做?
最佳答案
您还可以使用以下内容,尽管它确实在字段之间引入了空格。
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
关于sql - 如何使用 SQLPLUS 假脱机到 CSV 格式的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643137/