我正在寻找一款工具,可以将PostgreSQL表格转换成维基百科格式的数据字典(最好是Confluence)。目前市面上大多数工具需要大量手动操作和使用多个工具才能完成此任务(例如:SchemaSpy、DB Visual Architect、Confluence插件将输出的HTML DD转换为Confluence)。我需要一款只需扫描我的Postgres表格并输出友好的维基百科数据字典的工具,以便在数据库发生变化时无缝维护,而不必更新其他工具中的数据库和数据库架构。
我正在寻找一款工具,可以将PostgreSQL表格转换成维基百科格式的数据字典(最好是Confluence)。目前市面上大多数工具需要大量手动操作和使用多个工具才能完成此任务(例如:SchemaSpy、DB Visual Architect、Confluence插件将输出的HTML DD转换为Confluence)。我需要一款只需扫描我的Postgres表格并输出友好的维基百科数据字典的工具,以便在数据库发生变化时无缝维护,而不必更新其他工具中的数据库和数据库架构。
有Bob Swift的Confluence SQL插件,允许您在Confluence页面中显示从SQL查询派生的数据..例如作为表格..也许对您来说值得一看?
目前支持Confluence版本3.1.x - 4.9.x...
该插件是免费的,可以从Atlassian的插件交换中心下载:https://plugins.atlassian.com/plugins/org.swift.confluence.sql
关于插件的其他信息可以在这里找到: https://studio.plugins.atlassian.com/wiki/display/SQL/Confluence+SQL+Plugin
我认为你需要自己编写脚本,但这很容易且有趣。我将在此假设使用Python。
我喜欢Confluence XML-RPC接口。有关详细信息,请参见http://goo.gl/KCt3z。你可能关心的远程方法是登录、获取页面、设置页面和/或更新页面。这个框架看起来像:
import xmlrpclib
server = xmlrpclib.Server(opts.url)
conn = server.confluence1
token = conn.login(opts.username, opts.password)
page = conn.getPage(token,'PageSpace',page_title)
page = page + table
page = conn.updatePage(token,page,update_options)
table
这里是从PG表中获取的数据。我们将在下面构建它。
要从PostgreSQL中提取简单数据,我通常使用最多的是psycopg2(也考虑SQLSoup)。无论你如何获取数据,最终你都会得到一个以字典形式组成的行列表。数据库部分可能看起来像:
import psycopg2, psycopg2.extras
conn = psycopg2.connect("dbname=reece")
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cur.execute('SELECT * FROM sometable')
rows = cur.fetchall()
现在你需要格式化数据。对于简单的内容,print=语句就可以工作了。对于更复杂的格式化,请考虑使用像jinja2(http://jinja.pocoo.org/)这样的模板引擎。渲染代码可能如下所示:
from jinja2 import Template
template = Template(open(template_path).read())
table = template.render( rows = rows )
<table>
<tr>
<th>col header 1</th>
<th>col header 2</th>
</tr>
{% for row in rows|sort -%}
<tr>
<td>{{row.col1}}</td>
<td>{{row.col2}}</td>
</tr>
{% endfor %}
</table>
select table_name from information_schema.tables where table_schema = current_schema();