用于转换查询的UNIX脚本

时间:2010-04-06 03:55:00

标签: oracle shell scripting

我需要一个UNIX shell脚本来将我的查询从Java兼容转换为Oracle兼容格式。即

我有所有兼容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" + "'"

Oracle

  

从测试中选择a,b,c,d,e,f,g   年(时间戳)=年(今天)和   月(时间戳)=月(今天)和   日(时间戳)= 2,h ='W'

是否可以使用sed或awk?

2 个答案:

答案 0 :(得分: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的stdout获得oracle版本。

答案 1 :(得分:0)

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

可能有帮助,但只有当查询在同一行上平衡时才会有所帮助。例如,它失败了:

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

HTH