【问题标题】:Copy whole SQL Server database into JSON from Python将整个 SQL Server 数据库从 Python 复制到 JSON
【发布时间】:2010-03-31 11:57:34
【问题描述】:

我面临一个非典型的转换问题。大约十年前,我用 ASP 编写了一个大型网站。多年来,这变成了 ASP.NET,但保留了相同的数据库。

我刚刚在 Django 中重新完成了网站,并且我已经复制了所有核心数据,但是在我取消我的主机帐户之前,我需要确保我有一个数据的长期备份所以如果我发现我遗漏了什么,我可以从本地副本中复制它。

更复杂的是,我不再拥有 Windows。一段时间前,我在所有机器上都迁移到了 Ubuntu。我可以要求主机向我发送备份,但无法使用 MSSQL 访问机器,如果需要,我将无法使用

所以我正在寻找可以做的事情:

db = {}
for table in database:
    db[table.name] = [row for row in table]

然后我可以在某处将db 序列化以供以后使用...但是如何进行表迭代?有没有更简单的方法来完成这一切? MSSQL可以做一个跨平台的SQLDump(inc data)吗?

对于以前的 MSSQL,我使用过 pymssql,但我不知道如何迭代表和复制行(最好使用列标题,这样我就可以知道数据是什么)。我不是在寻找太多代码,但我需要在正确的方向上戳一下。

【问题讨论】:

    标签: python sql-server pymssql


    【解决方案1】:

    查看 sysobjects 和 syscolumns 表。也可以试试:

    SELECT * FROM sysobjects WHERE name LIKE 'sys%'
    

    查找任何其他感兴趣的元表。有关这些表和较新的 SQL2005 对应表的更多信息,请参阅 here

    【讨论】:

      【解决方案2】:

      当我需要从 python 连接到 sql server 时,我喜欢 ADOdb python 模块。这是一个简单教程/示例的链接:http://phplens.com/lens/adodb/adodb-py-docs.htm#tutorial

      【讨论】:

        【解决方案3】:

        我知道你说的是 JSON,但是生成一个 SQL 脚本以在 XML 中进行整个转储非常简单:

        SELECT  REPLACE(REPLACE('SELECT * FROM {TABLE_SCHEMA}.{TABLE_NAME} FOR XML RAW', '{TABLE_SCHEMA}',
                                QUOTENAME(TABLE_SCHEMA)), '{TABLE_NAME}', QUOTENAME(TABLE_NAME))
        FROM    INFORMATION_SCHEMA.TABLES
        WHERE   TABLE_TYPE = 'BASE TABLE'
        ORDER BY TABLE_SCHEMA
               ,TABLE_NAME
        

        【讨论】:

          【解决方案4】:

          除了你的编码方法 - 我想说:

          • 在 Windows 上使用 eval 设置虚拟机
          • 放上sql server eval
          • 恢复您的数据
          • 使用来自red-gate 的优秀数据库脚本工具手动或自动检查它来编写数据和架构脚本
          • 如果没问题,那么您有 (a) 良好的备份和 (b) 脚本输出。

          【讨论】:

            猜你喜欢
            • 2023-04-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-11
            • 2017-11-18
            • 2010-09-16
            • 2020-02-24
            • 2012-05-29
            相关资源
            最近更新 更多