Инструмент для анализа SQL-запросов - PullRequest
0 голосов
/ 11 октября 2018

Существуют ли какие-либо инструменты, которые могут принять запрос postgres и преобразовать его в объект JSON.Что-то вроде:

INSERT INTO schema_a.table_a
SELECT * from schema_b.table_b

Выходы:

{
'type': 'query',
'method': 'INSERT INTO',
'output':
    {
    'type': 'table',
    'schema': 'schema_a'
    'table': 'table_a'
    },
'input':
    {
    'type': 'query',
    'method': 'SELECT',
    'inputs':
    [
        {
        'type': 'table'
        'schema': 'schema_b'
        'table': 'table_b'
        }
    ]
    }
}

Это не обязательно должно быть именно так, но идея заключалась бы в том, чтобы мы могли классифицировать входы, выходы, методы ибыть достаточно гибким, чтобы иметь возможность обрабатывать объединения, подзапросы и т. д.

1 Ответ

0 голосов
/ 11 октября 2018

Вероятно, это не совсем то, что вы ищете, но EXPLAIN поддерживает JSON как тип вывода, который разбивает запрос на его составные части, используя анализатор / планировщик запросов PostgreSQL (некоторые ключи / значениядля краткости опущено):

CREATE TABLE test ( id SERIAL PRIMARY KEY, value TEXT NOT NULL );

EXPLAIN (FORMAT JSON) INSERT INTO test VALUES (1, 'Test');
[
  {
    "Plan": {
      "Node Type": "ModifyTable",
      "Operation": "Insert",
      "Relation Name": "test",
      "Alias": "test"
    }
  }
]

EXPLAIN (FORMAT JSON) SELECT * FROM test;
[
  {
    "Plan": {
      "Node Type": "Seq Scan",
      "Relation Name": "test",
      "Alias": "test"
    }
  }
]

Это, безусловно, сможет рассказать вам обо всех отношениях, используемых в запросе (включая сложные объединения, представления и т. д.).Если вы используете ANALYZE, он сможет сообщить вам количество выходных строк (но не их содержимое).Это не сможет сказать вам входные данные для запроса.

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