2010-04-06 57 views
1

我需要一個UNIX shell腳本將我的查詢從Java兼容轉換爲Oracle兼容格式。即。用於轉換查詢的UNIX腳本

我有所有的java兼容的查詢:

的java:

SELECT a, b, c, d, e, f,g "+// "from test where year(timestamp)=year(today) and month(timestamp)=month(today) " 
+// "and day(timestamp)=2 and h='" + "W" + "'" 

甲骨文

選擇A,B,C,d,E,F,G從測試,其中 年(時間戳)=年(今日)和 月(時間戳)=月(今天)和 日(時間戳)= 2和h ='W'

是否有可能使用sed或awk?

回答

1

首先,保留所有的文字在

單行您可以用一行Perl代碼做到這一點:

perl -n -E 's/"[^"]+"//mg;s/"$//;print' java-sql.txt >oracle-sql.txt 

它也會刪除尾部'''。 如果你沒有一個文件,管道也在這裏工作

you-code-print-java-sql-to-stdout.exe | perl -n -E 's/"[^"]+"//g;s/"$//;print' 

你會得到的Perl的標準輸出的Oracle版本。

0
sed '/SELECT/s/"[^"]\+"//g' <FILE> 

也許會有幫助,但只有在查詢已平衡「在同一線S例如,它失敗了。

SELECT a, b, c, d, e, f,g "+//  
"from test where day(timestamp)=2 and h='" + "W" + "' 

HTH