【问题标题】:Python - extracting a SQL Server database schema to a filePython - 将 SQL Server 数据库架构提取到文件中
【发布时间】:2013-07-30 16:08:05
【问题描述】:

我经常需要将现有 SQL Server 数据库的完整架构提取到文件中。我需要涵盖每个对象——表、视图、函数、SP、UDDT、触发器等。目的是我可以使用文件差异实用程序将该架构与基线参考进行比较。

通常我使用 Enterprise Manager 或 Management Studio 编写数据库对象的脚本,然后将这些文件连接起来以一致的可预测顺序生成一个大文件。我想知道是否有办法在 Python 中完成这项任务?显然它需要一个额外的包,但是在查看了一些(pyodbc、SQLAlchemy、SQLObject)之后,它们似乎都不适合这个用例。

【问题讨论】:

    标签: sql-server python-2.7 database-schema


    【解决方案1】:

    如果您可以连接到 SQL Server 并在 Python 中运行查询,那么可以——这是可能的,但需要大量的努力和测试才能使其正常工作。

    想法是使用系统表来获取每个对象的详细信息,然后基于此生成 DDL 语句。 sys.syscmets 表中已经存在一些(如果不是全部)DDL 语句。

    在开始使用 Python 之前,先在 SSMS 中执行和检查它。

    select *
    from sys.tables
    
    select *
    from sys.all_columns
    
    select *
    from sys.views
    
    select *
    from sys.syscomments
    

    来自 MSDN 的所有系统表 documentation

    【讨论】:

      【解决方案2】:

      我过去曾使用过这种 PowerShell 策略。显然,这不是 Python,但它是一个您可以编写然后在 Python 中执行的脚本。阅读这篇文章,因为它可能是您最简单(也是最便宜)的解决方案:http://blogs.technet.com/b/heyscriptingguy/archive/2010/11/04/use-powershell-to-script-sql-database-objects.aspx

      作为免责声明,我只是导出存储过程,而不是每个对象。

      【讨论】:

      • 实际上我总体上比其他答案更喜欢这种方法,但 PowerShell 学习曲线对我来说是一个症结所在。现在我将使用 Python 选项,但以后我可能会切换。
      猜你喜欢
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多