2010-04-06 6 views
1

J'ai besoin d'un script shell UNIX pour convertir mes requêtes de Java au format compatible Oracle. c'est à dire.Script UNIX pour convertir des requêtes

I disposent de toutes les requêtes compatibles 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

SELECT a, b, c, d, e, f, g de test où année (horodatage) = année (aujourd'hui) et mois (horodatage) = mois (aujourd'hui) et jour (horodatage) = 2 et h = 'W'

Est-il possible d'utiliser sed ou awk?

Répondre

1

D'abord, conservez votre texte . en une seule ligne

Vous pouvez le faire avec le code Perl d'une ligne:

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

Il va également supprimer la queue "". Si vous ne disposez pas d'un fichier, le tuyau travaille également ici

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

Vous obtiendrez la version Oracle de la sortie standard de Perl.

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

peut aider, mais seulement si la requête a équilibré « s sur la même ligne Par exemple, il échoue pour:.

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

HTH

Questions connexes