2010-03-31 98 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 
相關問題