2014-11-06 33 views
1

我米使用SQL *做出口加用下面的代碼:刪除前導空格和SQL>標籤後臺時

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; 
  1. 我怎樣才能值之前擺脫空間的?

    100,200

  2. 如何才能擺脫在輸出文件的SQL>語句?

回答

1

echo off僅用於從文件運行時刪除SQL>提示。把你的命令在一個名爲export_client_data.sql並使用@命令運行它們:

SQL>@export_client_data.sql 

的SQL * Plus,是一個報表工具,將如表中定義的格式輸出到列寬度。因爲這個原因,使用TRIM()並不總是按預期工作。例如,您會在寬度的右側看到填充VARCHAR列。

通常使用SQL *創建一個提取再加上你會格式化這樣的查詢,並沒有需要修剪東西:

Select Client_ID || ',' || Cust_ID from cust; 
+0

更好地使用'silent'選項。 – 2015-06-16 08:26:58

0

一般,非Oracle答案:

  1. 使用ISO/ANSI SQL功能TRIM(Client_ID)刪除前導(和尾)空白。 (一些DBMS使用LTRIM來領先)

  2. 非標準REPLACE功能可能正常工作,即REPLACE(Client_ID, 'SQL> ', '')

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/[email protected] 

documentation

SILENT選項

-S [ILENT]

禁止所有SQL*Plus信息和提示消息,包括命令提示,命令的迴應以及橫幅 通常在您開始時顯示SQL*Plus。如果您省略了用戶名或 密碼,SQL*Plus會提示他們,但提示不可見! 使用SILENT在另一個程序中調用SQL*Plus,以便SQL*Plus的使用 對用戶是不可見的。

SILENT是使用CGI腳本或操作系統 腳本中的SQLPLUS -MARKUP命令爲Web創建報告的有用模式。在使用SILENT選項創建的報告中將會禁止SQL*Plus標題和提示,並且不會出現 。

或者,你也可以這樣做:

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>提示被忽略。