blob: 7ff0babdfdf87e86183f4047a7d5a0d5699fd334 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#!/bin/sh -
# $Id$
#
# This uses the SQL::Translator package (aka "SQL Fairy") to parse
# an SQL schema and graph the result via GraphViz.
#
# SQL::Translator appears to be pretty good at analyzing SQL, but is
# badly confused about how to format record labels in the "dot"
# language. Simplest solution for now is just to whack sqlt-graph's
# broken output into shape, in the long run I should send the author a
# patch.
for i in *.sql
do
sqlt-graph --db MySQL --output-type canon --show-datatypes --show-constraints $i |
perl -0777 -pe '
s/\\\n/ /g;
s/ +/ /g;
s/\\\|/|/g;
s/\\{([a-z0-9_]+)\|/${1}|{/gi;
s/-\\ +//g;
s/\\ \\l/|/g;
s/\|\\l \\}/}/g;
s/\|\\}/}/g;
s/{\n/{\n\tedge [arrowtail=none, arrowhead=crow];\n/;
' |
tee ${i%.sql}.dot |
dot -Tps2 |
ps2pdf - ${i%.dot}.pdf
done
|