2016-03-29 21 views
0

毎週同じクエリをsqlplusまたはSQLCLで抽出したいと思います。Windowsサーバー上でタスクをスケジュールし、csvファイルにアカウントコードと日付の名前を付けてスプーリングします。 私は次のスクリプトを書いて動作しますが、私は2つの問題があります。動的スプールからファイル名

SET ECHO OFF 
SET FEEDBACK OFF 
SET VERIFY OFF 
COL VPATH NEW_VALUE NEW_VPATH; 
COL PRESIDIO NEW_VALUE NEW_PRESIDIO; 
COL SEPARATORE NEW_VALUE NEW_SEPARATORE; 
COL DATA NEW_VALUE NEW_DATA; 
COL EXT NEW_VALUE NEW_EXT; 
SET SQLFORMAT CSV; 
SELECT 'C:\Shared_Folder\' VPATH, 'AO_GALLARATE' PRESIDIO,'_' SEPARATORE, TO_CHAR(CURRENT_DATE) DATA,'.CSV' EXT FROM DUAL; 
SET FEEDBACK ON; 
SET TERMOUT OFF; 
SPOOL "&NEW_VPATH&NEW_PRESIDIO&NEW_SEPARATORE&NEW_DATA&NEW_EXT"; 
SELECT /*CSV*/ SERIAL_NUMBER, DNS_HOST_NAME, IP_ADDRESS, MODEL_NAME, TOTAL_PAGE_COUNT - COLOR_PAGE_COUNT, COLOR_PAGE_COUNT, TRUNC(LAST_DATA_COLLECTION) FROM DEVICE WHERE ACCOUNT_CODE = '&NEW_PRESIDIO' AND model_name LIKE '%MS410%'; 
ORDER BY SERIAL_NUMBER ASC; 
SPOOL OFF; 
  1. 私は、少なくとも第1の時間のために、すべてのnew_vpathに値を入力し、new_presidio ..を要求するプロンプトを取得。もし私がこの部分を削除すると、スプーリングを開始するはずの要求があります
  2. 私はpl/sqlを使用すると、変数を正常に設定できるので、プロンプトは表示されませんが、スプーリングとクエリは機能しません。実際にスプールすると不正なファイル名が表示され、クエリで「account_code」文字列が見つからないためクエリが機能しません。

どこで間違っているのですか?

+0

[動的スプール位置がスプールを使用する方法ORACLE]の可能な重複(http://stackoverflow.com/questions/1246360/oracle-how-to-use-spool-with-dynamic-spool-location ) – ruudvan

答えて

0

おそらく何もありません。これは、@ruudvanが言っていることは重複しているのと少し違っています。あなたはそれをやっているようにスプールコマンドに代用を使用できるはずです。

これは以前のリリースのバグです。 SQLclの最新バージョンでは、これを試してみましたが、うまくいくようです。

(~/qa) $cat subnew.sql 
SET ECHO OFF 
SET FEEDBACK OFF 
SET VERIFY OFF 
COL VPATH NEW_VALUE NEW_VPATH; 
COL PRESIDIO NEW_VALUE NEW_PRESIDIO; 
COL SEPARATORE NEW_VALUE NEW_SEPARATORE; 
COL DATA NEW_VALUE NEW_DATA; 
COL EXT NEW_VALUE NEW_EXT; 
COL USER NEW_VALUE NEW_USER; 
SET SQLFORMAT CSV; 
SELECT './' VPATH, 'AO_GALLARATE' PRESIDIO,'_' SEPARATORE, TO_CHAR(CURRENT_DATE) DATA, 
     '.CSV' EXT , USER FROM DUAL; 
SET FEEDBACK OFF; 
SET TERMOUT OFF; 
SPOOL "&NEW_VPATH&NEW_PRESIDIO&NEW_SEPARATORE&NEW_DATA&NEW_EXT"; 
select /* csv */ * from substitution 
where upper(name) = '&NEW_USER'; 
SPOOL OFF; 
exit 

(~/qa) $sql barry/oracle @subnew 

SQLcl: Release 12.2.0.1.0 RC on Tue Aug 09 13:21:28 2016 

Copyright (c) 1982, 2016, Oracle. All rights reserved. 

Last Successful login time: Tue Aug 09 2016 13:21:29 +01:00 

Connected to: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 

"VPATH","PRESIDIO","SEPARATORE","DATA","EXT","USER" 
"./","AO_GALLARATE","_","09-AUG-16",".CSV","BARRY" 
(~/qa) $ls -altr AO_GALLARATE_09-AUG-16.CSV 
-rw-r--r-- 1 bamcgill staff 22 9 Aug 13:21 AO_GALLARATE_09-AUG-16.CSV 
(~/qa) $cat AO_GALLARATE_09-AUG-16.CSV 
"ID","NAME" 
1,"Barry" 
(~/qa) $ 
関連する問題