PostgreSQL的数据字典生成器,用于将内容转换成Confluence Wiki格式。

8

我正在寻找一款工具,可以将PostgreSQL表格转换成维基百科格式的数据字典(最好是Confluence)。目前市面上大多数工具需要大量手动操作和使用多个工具才能完成此任务(例如:SchemaSpy、DB Visual Architect、Confluence插件将输出的HTML DD转换为Confluence)。我需要一款只需扫描我的Postgres表格并输出友好的维基百科数据字典的工具,以便在数据库发生变化时无缝维护,而不必更新其他工具中的数据库和数据库架构。


似乎没有简单的答案。但是你可以使用Pyrseas获得你的DB结构的YAML输出,或者使用SchemaSpy获得XML输出。其余的都是“yaml到wiki”或“xml到wiki”的转换器...并不是什么高深的科学。 - filiprem
1
如果您雇用我,我可以编写这样的YAML-to-Wiki转换器。 :-) - filiprem
“Wiki格式”是什么意思?您需要一个包含每个表的Header1和每种类型的Header2的单个页面吗?或者您需要一个包含多个表格的列表,每个表格都指向一个专用页面吗? - vyegorov
2个回答

1

0

我认为你需要自己编写脚本,但这很容易且有趣。我将在此假设使用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>

注意:Confluence不再默认使用Wiki标记。您应该编写HTML。
最后,如果您想为所有表创建一个页面,可以查看information_schema,其中包含有关数据库作为表的信息。例如:
select table_name from information_schema.tables where table_schema = current_schema();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接