Frictionless supports exporting a data package as an ER-diagram dot file. For example:
dot
package = Package('datapackage.zip') package.to_er_diagram(path='erd.dot')