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

标签 sql oracle csv sqlplus

我想将一些查询提取为 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/

相关文章:

在 R 中多次运行一个函数

python - Pandas - 如何删除包含少于标题的字段的行

预定义值的 SQL 结果表

mysql - 不在第二个表中的记录列表的内部联接(非内部联接)

mysql左外连接

sql - DDL VS DCL 区别

r - 使用 `fread` 将 csv 文件从存档导入 `R` 而不提取到磁盘

mysql - 按年按月按月生成统计

xml - 如何在oracle中使用xmltable?

sql - 将字符串转换为日期并在给定字符串无效时引发异常