是否构建了可以进行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'
}
]
}
}
不必完全是这样,但是这个主意可以让我们对输入,输出,方法进行分类,并且足够灵活以能够处理联接,子查询等。
答案 0 :(得分:1)
可能不是您要找的东西,但是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,它将能够告诉您输出行的数量(而不是内容)。这将无法告诉您查询的输入。