【问题标题】:Remove Blank Line In Between Select Queries When Spooling to CSV File假脱机到 CSV 文件时删除选择查询之间的空白行
【发布时间】:2012-07-21 23:13:08
【问题描述】:

我正在使用 oracle sql developer 将一些数据假脱机到 csv 文件。到目前为止,我将其保存在一个文件中:

SET head OFF;
SET echo OFF; 
SET termout OFF; 
SET verify OFF; 
set colsep ,
set pagesize 0
set feedback off
@sandbox.sql

Sandbox.sql 包含以下内容:

spool "C:\TEMP\test.csv"
select 'Date,Average' from dual;
select to_char(rollup_time, 'mm/dd/yyyy'), average from sample_table
order by 1;
spool off;

这会生成一些如下所示的 csv 文件:

平均日期

2012 年 1 月 1 日 900
2012 年 1 月 2 日 910

我想去掉列标题后面的空白行,但我无法设置 trimspool(选项不存在),并且由于数据类型不同,union all 无法正常工作。有谁知道如何在 oracle 的 sql 开发者环境中去掉那个空行?

【问题讨论】:

  • pregen.wordpress.com/2010/06/17/output-sql-queries-to-csv ??他们在谈论诸如 SELECT * FROM CONTACTS WHERE email = NULL INTO OUTFILE ‘missingemails.csv’ FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘n’;但我没试过,让我们知道结果...
  • 我认为这不是我要找的,因为这只是从表中进行的基本选择并将其导出到 csv 文件中。它不允许我创建列标题
  • 是否必须在 SQL developer 中进行提取?如果您提取到 *nix 甚至 Windows 命令行,您可以使用脚本对文件进行后处理。你建立一个平面文件是为了什么?加载到另一个系统?举报?
  • 现在我想起来,这更像是一个好奇的问题。但是,是的,在 SQL 开发人员中。

标签: sql export-to-csv oracle-sqldeveloper


【解决方案1】:

开始吧,使用 SQL Developer(版本 18.2)

我没有你的桌子,但我有 HR.EMPLOYEES。

cd c:\sqldev
set feedback off
set pagesize 100
set sqlformat csv
spool so-no-blanks.csv
select 'Date, Average' from dual;
select to_char(hire_date, 'mm/dd/yyyy'), salary from employees
fetch first 3 rows only;
spool off

--set sqlformat csv:告诉SQL Developer的脚本引擎自动返回CSV格式的结果集(json、xml、insert、html、delimited也可以)

SQL Developer 的脚本引擎在几年前进行了更新,几乎支持 SQL*Plus 提供的所有功能,而且还支持更多功能。就像那个 'cd' 命令 - 它在执行类似 'spool' 之类的操作时设置路径

【讨论】:

    【解决方案2】:

    我刚刚发现自己处于与 roostersign 相同的情况,并且我设法避免了我在 SQL*Plus 中的两个查询之间的空白行:

    set space 0
    

    我通过测试这里的建议到达那里:SQL*Plus: Formatting query results

    【讨论】:

    • 这设置了列之间的空间(并且已被替换为 set colsep)列间距在假脱机到 CSV 文件时可能很重要,但这不是 OP 所要求的。
    【解决方案3】:

    使用“Set Newpage none”命令。

    设置 NEWP[年龄] {1 | n |没有} 设置从每页顶部到顶部标题要打印的空白行数。零值会在每页(包括第一页)的开头放置一个换页并清除大多数终端上的屏幕。如果将 NEWPAGE 设置为 NONE,SQL*Plus 不会在报告页面之间打印空行或换页。

    【讨论】:

    • 这是对OP的准确回应。 Oracle 将在输出的顶部添加一行。 OP 的示例显示了两个空白行。一是在标题列之前,二是在查询之间。使用 set newpage none 可以解决这两个问题。
    • 我用的是sql developer 3.2.20 甚至添加了SET NEWPAGE NONE 然后在sql文件中写了两条sql语句,两条sql查询结果之间有一个空行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 2018-09-26
    • 1970-01-01
    • 2017-05-07
    • 2018-03-24
    相关资源
    最近更新 更多