Mysql
 sql >> база данни >  >> RDS >> Mysql

Форматирайте MySQL кода в PHP низ

Най-добрият начин да направите това според мен е да използвате регулярни изрази или SED/AWK, за да форматирате всичко, това ни дава бонуса за подмяна на карти в движение. Вероятността да имате грешки в кода обаче е голяма, така че е доста трудно.

нека поработя малко и ще видя дали мога да намеря добро решение. Гарантирано ли е, че капсулирате всички SQL недвойни кавички?

РЕДАКТИРАНЕ

Опитайте това

cd {{directory}} && find . -type f -print0 |
  xargs -0 perl -i.bak -pe 's/select/SELECT/g ; s/from/\n\tFROM/g ; s/where/\n\t\tWHERE/g ; s/and/\n\t\tAND/g ; s/order by/\n\t\tORDER BY/g ; s/asc/ASC/g ; s/desc/DESC/g ;'

Ето един пример

$ printf '"select * from whatever where this = that and active = 1 order by something asc";\n' |
> perl -pe 's/select/SELECT/g ; s/from/\n\tFROM/g ; s/where/\n\t\tWHERE/g ; s/and/\n\t\tAND/g ; s/order by/\n\t\tORDER BY/g ; s/asc/ASC/g ; s/desc/DESC/g ;'

"SELECT * 
    FROM whatever 
        WHERE this = that 
        AND active = 1 
        ORDER BY something ASC";

красиво ли е? не, изобщо не, работи ли.... Да.

Ще се опитам да създам филтърен файл и може би малка програма bash или нещо подобно, когато намеря време да стартирам тази гореща каша.

РЕДАКТИРАНЕ

Ето малко ревизиран код, изглежда по-красив (отблизо)

printf '$request1 = "select * from whatever where this = that and active = 1 order by something asc";\n' | 
perl -pe 's/select/SELECT/gi ; s/from/\n  FROM/gi ; s/where/\n    WHERE/gi ; s/and/\n    AND/gi ; s/order by/\n      ORDER BY/gi ; s/asc/ASC/gi ; s/desc/DESC/gi ;' | 
awk 'NR == 1 {pad = length($0)/2; print} NR > 1 {gsub(/\r/,""); printf "%*s%s\n", pad, " ", $0}'

__OUTPUTS__
$request1 = "SELECT * 
             FROM whatever 
               WHERE this = that 
               AND active = 1 
                 ORDER BY something ASC";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. По-добре да използвате по-малко от равно или in в sql заявка

  2. Указване на множество връзки едно към много между таблици в Hibernate

  3. протоколни пакети извън ред

  4. Как мога да получа идентификатори на предшественици за произволна дълбочина на рекурсия в една SQL заявка?

  5. Как да качите изображения в MySQL база данни с помощта на PHP код