Подтвердить что ты не робот

Форматирование строки SQL

Кто-нибудь знает о программе, утилите или некоторой программной библиотеке, желательно для Linux, которая принимает неформатированную строку SQL и довольно печатает ее?

Например, мне бы хотелось, чтобы следующий

select * from users where name = 'Paul'

будет изменено на что-то вроде этого

select * 
from users
where
   name = 'Paul'

Точное форматирование не имеет значения. Мне просто нужно что-то взять с большой строкой SQL и разбить ее на нечто более читаемое.

4b9b3361

Ответ 1

http://www.sqlinform.com/

Этот инструмент переформатирует код SQL. Я использовал его с потрясающими результатами. Он бесплатный как webapp и имеет загружаемую версию.

Ответ 2

Отъезд sqlparse. Это модуль Python, который устанавливает команду sqlformat. Использование прост, например:

sqlformat --reindent --keywords upper --identifiers lower my_file.sql

Я попробовал вышеупомянутые альтернативы CLI, но:

  • sqlinform отсутствует, потому что я хочу использовать CLI с открытым исходным кодом.
  • fsqlf имеет только несколько функций (create view отсутствует, например).

Благодаря sqlformat я даже узнал, что "REF" является зарезервированным ключевым словом в SQL: 2011 и SQL: 2008.

Ответ 3

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

Примеры:

☺  [[email protected]:~] 
$ 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
☺  [[email protected]:~] 
$ vim formatting.conf # 2 character change
☺  [[email protected]:~] 
$ 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
☺  [[email protected]:~] 
$ vim formatting.conf # 1 character change
☺  [[email protected]:~] 
$ 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
☺  [[email protected]:~] 
$ 

Ответ 4

Мне нравится использовать http://www.dpriver.com - это хорошая надстройка для SQL Server Management Studio.

Ответ 6

Не то, чтобы я рекомендовал потратить (относительно большие) деньги на это только для этой цели, но Toad имеет встроенную функцию это делает именно то, что вы хотите.

Он включает в себя множество параметров, позволяющих точно определить, как вы хотите отформатировать SQL (все столбцы на отдельных строках и т.д.). Довольно приятно, но только если у вас уже есть Жаба. Я знаю, что версия Oracle делает это, но я бы предположил, что SQL Server или другие версии будут также.