UNIX скрипт для конвертации запросов - PullRequest
1 голос
/ 06 апреля 2010

Мне нужен сценарий оболочки UNIX для преобразования моих запросов из 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 ]

1 голос
/ 06 апреля 2010

Прежде всего, сохраните весь текст в одну строку.

Вы можете сделать это с помощью однострочного кода 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' 

Вы получите версию oracle из стандартного вывода Perl.

0 голосов
/ 06 апреля 2010
sed '/SELECT/s/"[^"]\+"//g' <FILE>

Может помочь, но только в том случае, если запрос уравновешен в одной строке. Например, он не выполняется для:

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

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...