2013-12-23 31 views
1

我想生成一個數據文件作爲下表的一個表,這是可能的固定格式。 我已經準備好SQL了。額外的空間附加在後臺SQL腳本在UNIX

例子:

SELECT RPAD(ORGANIZATION_ID,10)||RPAD(ORGANIZATION_NAME,100)||RPAD(EMPLOYEE_COUNT,100) 
FROM MY_ORGANIZATION_STATE; 

我在一個SQL開發人員運行它,並出口到Excel中。爲50個記錄的樣本。 能夠正確提取,格式看起來不錯。

但我需要自動化它,因此我們使用SQL * Plus的spool命令。 下面是一個片段。

set pagesize 100; 
set linesize 10000; 
set heading off; 
spool orgn_output.dat; 
@my_script # this has my SQL inside 
spool off; 

這運行沒有任何錯誤。

但是,當我試圖打開該文件,我可以看到,額外的空間在文件中,並且佈局不像我預期的那樣!

當我手動運行SQL,並使用PUTTY後臺處理時,它會查找文件。爲什麼我的腳本生成錯誤的腳本。我不知道爲什麼會發生。

任何幫助非常感謝!

編輯:輸出:

100   [email protected]@Sales   469 
101   [email protected]     234 
102   [email protected]    245 
103   [email protected]@Finance  469 

感謝

+0

實際上,在unix中發出cut -c命令,清楚地顯示了佈局是錯誤的。 –

+0

我試過我自己的例子! –

+1

每行末尾或值之間多餘的空格? 「設置製表符」會影響你所看到的內容嗎?這可能會讓一些路線失敗。如果行太長,您可能需要'設置trimspool',但我不確定這是否相關? –

回答

2

事實上,我能夠很容易地重現您的問題。它發生在列文本較小時。當我發出確切的文字大小,佈局是大小,並且我看到假脫機文本中的文本具有製表符而不是空格。模式也不一致。我剛剛用可用命令進行了研究,並且發現了。 SET TAB OFF;在sqlplus中解決了這個問題。

我希望,sqlplus本身正在改變多個空間到TAB中。設置TAB解決了它。

請嘗試該選項。並讓我知道。祝你好運!

P.S。編輯你的問題,發現錯誤,可能是SO,有效地轉換TAB格式:) :)

+0

你是對的! U的傢伙很棒..我很困擾這個問題很多..是通過UNICODe相關的研究問題! –

+2

@DevarajMahesan - SQL * Plus文檔包含有關格式的各個部分;包括['set tab']的行爲(http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve040.htm#i2683445)。幫助,如果你已經知道你在找什麼,當然* 8-) –

+1

Devaraj - 不確定尾隨空格是否也是一個問題,但如果他們是你,也應該'SET TRIMSPOOL ON'。 –

0

其實我有這樣的問題與sqlplus。我修好後,我想推薦你嘗試這種格式的sqlplus。

  1. SET TRIMSPOOL ON;
  2. SET TAB OFF;

由於錯誤,因爲它是關於後臺打印問題。所以我們只是把trimspool的格式打開。