2017-03-08 46 views
0

我有一個需求,我需要從.bat文件運行.sql文件。 .sql文件的輸出應該重定向到.txt文件。我能夠做到這一點,但是sql文件正在打印以'_'加下劃線的列名,並且在文件末尾打印'3 rows selected'。我不希望列名和'3 rows selected'出現在輸出文件中。你能指出我在這裏做錯了什麼嗎? 以下是我的代碼的詳細信息。請注意,我的sql必須使用sqlplus在oracle數據庫中運行。從批處理文件運行SQL腳本 - 輸出不如預期

sql_file.sql

SET HEADING OFF FEEDBACK OFF ECHO OFF PAGESIZE 0 
SET UNDERLINE off 
select 'This '|| emp_name || ' belongs to ' || dept_name || ' department' as emp_data from emplyoee; 

exit 

batch_file.bat

@echo off 

sqlplus -s -l scott/[email protected] @"C:\Data Files\sql_file.sql" >> "C:\Data Files\output_file.txt" 

我想output_file.txt看起來像

This Charles employee belongs to Finance department 
This Chris employee belongs to Sales department 
This John employee belongs to Engineering department 

但是我的代碼正在生產輸出

emp_data 
-------------------------------------------------- 
This Charles employee belongs to Finance department 
This Chris employee belongs to Sales department 
This John employee belongs to Engineering department 

3 rows selected 
+0

爲什麼你也許可以使用批處理文件代碼去除標題和預告片記錄,我相信你只是改變你的查詢,以便它不輸出該信息。你應該改變你的問題標籤,以包括類似sql查詢。我的DB人員始終輸出查詢,並且永遠不會輸出標題和預告片信息。 – Squashman

+0

這很奇怪 - 我測試了你的sql腳本(包括套件的一行),它對我有用。你使用什麼版本? (我測試它在11.2.0.1) –

+0

這種看起來像你的問題:http://stackoverflow.com/questions/28689851/remove-column-header-into-the-ouput-text-file – Squashman

回答

0

我個人不使用SET命令在一行...也許嘗試這樣的:

SET HEADING OFF 
SET FEEDBACK OFF 
SET ECHO OFF 
SET PAGESIZE 0 
+0

我試過了,但沒有奏效。我感覺到的是這些設置選項只是被忽略。如果我在sql開發者中運行sql_file.sql的內容,它會以我想要的方式生成。但我的要求是從批處理文件中運行。 – NeedBasedLearner

+0

這種鏈接表示忽略set命令的這種想法。我在這篇文章中不理解的是 - 代碼是批處理文件還是.sql文件的一部分。更多的是他們給出了shell腳本(unix/linux)而不是批處理腳本(windows)的例子。 http://www.orafaq.com/forum/t/69493/ – NeedBasedLearner

+0

你是否在SQL腳本中放置了SET命令? – BobC