我使用以下代码使用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>
语句?
答案 0 :(得分:2)
尝试以下选项: 将TRIMSPOOL设置为ON,否则假脱机文件中的每一行都将被填充为空白,直到达到行大小为止。
将TRIMOUT设置为ON,否则输出中的每一行都会被填充为空白,直到达到行大小为止。
SET WRAP OFF如果行长于LINESIZE,则截断该行。如果linesize足够大,则不会发生这种情况。
SET TERMOUT OFF禁止将结果打印到输出。这些行仍被写入假脱机文件。这可能会大大延长语句的执行时间。
答案 1 :(得分:1)
echo off
仅适用于删除SQL>从文件运行时提示。将命令放在名为export_client_data.sql的文件中,并使用@命令运行它们:
SQL>@export_client_data.sql
作为报表工具的SQL * Plus将输出格式化为表中定义的列宽。因此,使用TRIM()并不总是按预期工作。例如,您将在宽度的右侧看到填充的VARCHAR列。
通常使用SQL * Plus创建提取,您可以像这样格式化查询,而不需要TRIM任何东西:
Select Client_ID || ',' || Cust_ID from cust;
答案 2 :(得分:0)
一般,非Oracle回答:
使用ISO / ANSI SQL函数TRIM(Client_ID)
删除前导(和尾随)空格。 (有些DBMS使用LTRIM进行领导。)
非标准REPLACE功能可能有用,即REPLACE(Client_ID, 'SQL> ', '')
。
答案 3 :(得分:0)
如何在值之前摆脱空格?
使用 TRIM 。例如,
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>
如何摆脱SQL>输出文件中的语句?
最好的方法是使用 SILENT 选项-s
。
例如,
sqlplus -s scott/tiger@orcl
SILENT Option
-S [ILENT]
禁止所有
SQL*Plus
信息和提示消息,包括命令提示符,命令回显和横幅 通常在您开始SQL*Plus
时显示。如果省略用户名或 密码,SQL*Plus
提示他们,但提示不可见! 使用SILENT在另一个程序中调用SQL*Plus
以便使用SQL*Plus
对于用户是不可见的。SILENT是一种在CGI脚本或操作系统中使用SQLPLUS -MARKUP命令为Web创建报告的有用模式 脚本。
SQL*Plus
横幅和提示被抑制,但没有 出现在使用SILENT选项创建的报告中。
或者,您也可以这样做:
set sqlprompt ''
例如,
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>
提示被忽略。