0

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

我刚刚在 Django 中重新完成了该站点,并且我已经复制了所有核心数据,但是在我取消我的主机帐户之前,我需要确保我已经对数据进行了长期备份,所以如果它原来我遗漏了一些东西,我可以从本地副本中复制它。

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

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

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

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

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

4

4 回答 4

1

查看 sysobjects 和 syscolumns 表。也试试:

SELECT * FROM sysobjects WHERE name LIKE 'sys%'

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

于 2010-03-31T12:03:14.043 回答
1

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

于 2010-03-31T12:19:27.407 回答
1

我知道您说的是 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
于 2010-03-31T15:18:52.917 回答
0

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

  • 在 Windows 上使用 eval 设置虚拟机
  • 把sql server eval放在上面
  • 恢复您的数据
  • 使用red-gate的优秀 db 脚本工具手动或自动检查数据和模式
  • 如果没问题,那么你有(a)一个好的备份和(b)一个脚本输出。
于 2010-03-31T12:17:48.177 回答