我需要一个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?
答案 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