删除前导空格和SQL>;假脱机时的标记
我正在使用SQL*Plus进行导出,并使用以下代码:删除前导空格和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; 我得到了正
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;
SQL>
语句一般,非Oracle答案:
修剪(客户端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
选项。