SQL Query Formatter [закрыто]


14

Существуют ли (основанные на Linux) программы / плагины / расширения SQL Query Formatting?

Я использую PostgreSQL и MySQL, но приветствуются и другие БД.

Я могу использовать виртуальную машину для тестирования, но предпочел бы решение на основе Linux (Ubuntu).

Я видел онлайн-версию, но ничего не устанавливалось.

Eclipse Based IDE также является плюсом

Пример:

select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc

что-то вроде

SELECT f1, f2, fname, lName
FROM tblName
WHERE f1 = true
AND fname IS NOT NULL
ORDER BY lName ASC

Вот онлайн пример:

Но я бы предпочел, чтобы это было в местной среде

Связанный:

ОБНОВИТЬ:

Глядя на это:

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ:

Хотя это может быть излишним, у Jet Brains есть новая база данных IDE, в которой есть несколько отличных опций переформатирования.


Вы уже посмотрели форматер SQLinForm ( sqlinform.com ). Он написан на Java и, следовательно, работает в Linux, имеет версию командной строки и доступный API
Guido

Ответы:


8

pgAdmin поставляется со встроенным средством форматирования запросов. Вы бы создали представление, чтобы увидеть запрос в следующем формате:

введите описание изображения здесь

Конечно, идентификаторы в кавычках без кавычек будут приведены к нижнему регистру. (Но я бы посчитал это благословением.)

И шумовые слова вроде ASCв ORDER BYбудут обрезаны.

И наконец, что не менее важно, представление должно быть действительным в базе данных для начала. Так что не совсем то , что вы просили. Запросы на самом деле обратно проектируются из определения представления.


1
Извините, я думаю, вы не поняли вопрос, я могу отформатировать его сам. То, что я ищу, это что-то сделать в команде или IDE. Пример: я бы выделил запрос и нажал Ctrl + Shift + F, это автоматически сделало бы отступ, все ключевые слова для UPPER, каждая команда / ключевое слово начиналось с новой строки и т. Д. Так что, если кто-то напишет или запишет этот длинный запрос, я просто хотел бы быстрый способ отформатировать его вместо того, чтобы делать это вручную. Вот онлайн пример: dpriver.com/pp/sqlformat.htm
Фил Паффорд,

1
@PhillPafford: Да, не совсем то, что вы ищете. Самая близкая вещь к формататору запросов PostgreSQL, которую я знаю. Это не значит, что там ничего нет.
Эрвин Брандштеттер

Вы пробовали jetbrains.com/dbe
Фил Паффорд

3

Будучи более общим (SQL вместо pgSQL), fsqlf ( http://sourceforge.net/projects/fsqlf/ ) - это программа командной строки или GUI с открытым исходным кодом для форматирования SQL. Он поддерживает наличие файла formatting.conf, который дает вам большую гибкость в том, как выглядит конечный продукт.

Примеры:

  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
  f1
, f2
, fname
, lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ vim formatting.conf # 2 character change
  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
 f1 ,
 f2 ,
 fname ,
 lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ vim formatting.conf # 1 character change
  [wwalker@speedy:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT
 f1 , f2 , fname , lName
FROM tblName
WHERE f1=true
AND fname is not null
ORDER BY lName asc
  [wwalker@speedy:~] 
$ 



0

Редактор запросов MySQL Workbench изначально предоставляет средство форматирования запросов SQL: вам просто нужно нажать на значок «beautify», как показано ниже (красный кружок). Обратите внимание, что это не меняет регистр операторов SQL. (Я отправил отчет об ошибке .)

введите описание изображения здесь


-1

SQLinForm ( http://www.sqlinform.com ) основан на Java и поэтому может работать в среде Linux. У них есть версия API и командной строки, которую вы можете легко использовать в своих скриптах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.