删除前导空格和SQL>;假脱机时的标记

删除前导空格和SQL>;假脱机时的标记,sql,oracle,formatting,sqlplus,spool,Sql,Oracle,Formatting,Sqlplus,Spool,我正在使用SQL*Plus进行导出,并使用以下代码: Set echo off Set verify off Set feedback off Set heading off Set termout on Set pages 50000 Set linesize 1000 Set newpage none Set colsep "," spool Z:\ff\ss.csv Select Client_ID, Cust_ID from cust; spool off; exit; 我得到了正

我正在使用SQL*Plus进行导出,并使用以下代码:

Set echo off
Set verify off
Set feedback off
Set heading off
Set termout on
Set pages 50000 
Set linesize 1000
Set newpage none
Set colsep ","
spool Z:\ff\ss.csv
Select Client_ID, Cust_ID from cust; 
spool off;
exit;
我得到了正确的输出,但没有最好的格式

SQL> Select Client_ID, Cust_ID from cust; 
       100,200
       200,300
       300,400
       400,500
SQL>spool off;
  • 如何去掉值之前的空格

    100200

  • 如何删除输出文件中的
    SQL>
    语句


  • 一般,非Oracle答案:

  • 使用ISO/ANSI SQL函数
    修剪(客户端ID)
    删除前导(和尾随)空格。(某些DBMS使用LTRIM进行引导。)

  • 非标准的替换功能可以工作,即
    REPLACE(客户端ID,'SQL>,'')


  • echo off
    仅用于从文件运行时删除SQL>提示。将命令放入名为export_client_data.sql的文件中,并使用@command运行它们:

    SQL>@export_client_data.sql
    
    SQL*Plus作为一种报告工具,将输出格式化为表中定义的列宽。因此,使用TRIM()并不总是像预期的那样工作。例如,您将看到一个VARCHAR列填充在宽度的右侧

    通常,要使用SQL*Plus创建提取,您可以像这样格式化查询,而无需修剪任何内容:

    Select Client_ID || ',' || Cust_ID from cust;
    
    如何去掉值之前的空格

    使用修剪。比如说,

    SQL> SELECT TRIM(empno) eno FROM emp;
    
    ENO
    -------------------------------------
    7369
    7499
    7521
    7566
    7654
    7698
    7782
    7788
    7839
    7844
    7876
    7900
    7902
    7934
    
    14 rows selected.
    
    SQL>
    
    sqlplus -s scott/tiger@orcl
    
    SQL> set sqlprompt ''
    select empno from emp;
    
         EMPNO
    ----------
          7369
          7499
          7521
          7566
          7654
          7698
          7782
          7788
          7839
          7844
          7876
          7900
          7902
          7934
    
    14 rows selected.
    
    如何删除输出文件中的SQL>语句

    最好的方法是使用静音选项
    -s

    比如说,

    SQL> SELECT TRIM(empno) eno FROM emp;
    
    ENO
    -------------------------------------
    7369
    7499
    7521
    7566
    7654
    7698
    7782
    7788
    7839
    7844
    7876
    7900
    7902
    7934
    
    14 rows selected.
    
    SQL>
    
    sqlplus -s scott/tiger@orcl
    
    SQL> set sqlprompt ''
    select empno from emp;
    
         EMPNO
    ----------
          7369
          7499
          7521
          7566
          7654
          7698
          7782
          7788
          7839
          7844
          7876
          7900
          7902
          7934
    
    14 rows selected.
    

    无提示选项

    -S[ILENT]

    抑制所有
    SQL*Plus
    信息和提示消息,包括命令提示、命令回显和横幅 启动
    SQL*Plus
    时正常显示。如果省略用户名或 密码,
    SQL*Plus
    提示输入密码,但提示不可见! 使用SILENT在另一个程序中调用
    SQL*Plus
    ,以便 SQL*Plus的对用户不可见

    对于在CGI脚本或操作系统中使用SQLPLUS-MARKUP命令为web创建报告,SILENT是一种有用的模式 剧本
    SQL*Plus
    横幅和提示将被抑制,不会显示 显示在使用“静默”选项创建的报告中

    或者,您也可以执行以下操作:

    set sqlprompt ''
    
    比如说,

    SQL> SELECT TRIM(empno) eno FROM emp;
    
    ENO
    -------------------------------------
    7369
    7499
    7521
    7566
    7654
    7698
    7782
    7788
    7839
    7844
    7876
    7900
    7902
    7934
    
    14 rows selected.
    
    SQL>
    
    sqlplus -s scott/tiger@orcl
    
    SQL> set sqlprompt ''
    select empno from emp;
    
         EMPNO
    ----------
          7369
          7499
          7521
          7566
          7654
          7698
          7782
          7788
          7839
          7844
          7876
          7900
          7902
          7934
    
    14 rows selected.
    
    因此,
    SQL>
    提示被忽略。

    尝试以下选项: 将TRIMSPOOL设置为ON,否则spool文件中的每一行都将填充空格,直到达到linesize

    将TRIMOUT设置为ON,否则输出中的每一行都将填充空格,直到达到行大小为止

    如果线条的长度大于线条大小,则“SET WRAP OFF”将截断该线条。如果线宽足够大,则不应发生这种情况


    设置TERMOUT OFF将禁止将结果打印到输出。这些行仍然会写入spool文件。这可能会大大加快语句的执行时间。

    最好使用
    silent
    选项。