2010-03-31 96 views
0

我面临非典型转换问题。大约十年前,我在ASP中编写了一个大型网站。多年来,这变成了ASP.NET,但保持相同的数据库。将整个SQL Server数据库从Python复制到JSON中

我刚刚重做了Django中的网站,并且我复制了所有核心数据,但在取消与主机的帐户之前,我需要确保我有一个长期的备份数据,所以如果事实证明我错过了一些东西,我可以从本地副本中复制它。

使问题复杂化,我不再有Windows。我回到了所有机器上的Ubuntu。我可以要求主机给我一个备份,但没有访问MSSQL的机器,我不能使用,如果我需要。

所以我在寻找的东西做:

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

然后我可以序列db过某处后食用......但我怎么做表迭代?有没有更简单的方法来做到这一切? MSSQL可以做一个跨平台的SQLDump(inc数据)吗?

对于以前的MSSQL我已经使用pymssql,但我不知道如何迭代表和复制行(理想情况下与列标题,所以我可以告诉数据是什么)。我并没有寻找太多的代码,但我需要一个正确的方向。

回答

1

查看sysobjects和syscolumns表。也请尝试:

SELECT * FROM sysobjects WHERE name LIKE 'sys%' 

找到任何其他元数据感兴趣。请参阅here以获取关于这些表和更新的SQL2005对应表的更多信息。

1

顺便到你的编码方法 - 我会说:

  • 建立一个虚拟机上的窗户一个eval
  • 放的SQL Server的eval
  • 恢复你的数据
  • 手动或自动使用red-gate的优秀数据库脚本工具来检查数据和模式
  • 如果没问题,那么您有(a)良好的备份和(b)脚本输出。
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 
相关问题