如何以跨平台方式生成 Microsoft SQL Server DDL(最好使用 Python)?

2 投票
2 回答
798 浏览
提问于 2025-04-16 18:48

我想要一种跨平台的方法,把SQL Server数据库的DDL导出到文件中,这样我就可以把它们放到版本控制里。目前我在Windows上用VBScript和SQLDMO来做这个,但我希望能在Linux系统上也做到,最好是用Python。

我现在有一个解决方案,使用SQLAlchemy的表反射功能,但速度有点慢,而且目前没有给我想要的所有细节。例如,外键的“ON DELETE CASCADE”信息缺失了。

有没有其他项目可以从T-SQL中重建DDL?如果有的话,我应该能比较容易地把它移植到Python上。其他建议也欢迎。

2 个回答

0

这不是一个完整的解决方案(这是一个脚本,最初由Tim Chapman写的,我在网上找来的,后来也修补过几次),但我用的是一个T-SQL的存储过程,可以用来生成表的脚本:

https://github.com/TaoK/PoorMansTSqlFormatter/blob/master/PoorMansTSqlFormatterTest/Data/InputSql/5_ComplexDDL.txt

如果你想生成其他对象的脚本(比如存储过程、视图等),这个工具就没什么用处了。不过如果你只需要表的结构,它对我来说效果还不错!就像@Randy上面提到的,它可以处理表、索引和约束,但这个脚本不支持触发器。

0

这是我写的一段代码,能做到这个功能:

https://bitbucket.org/rsyring/mssqlddlwriter/

它可以把表格、约束、索引和触发器的基本信息写到文件里。

撰写回答