資料庫表結構自動修復和表資料同步原理分析

2021-08-04 12:27:28 字數 1515 閱讀 8695

大家是否有這樣的體驗:

1、專案在本地多人開發,多次進行資料庫修改操作,但忘記記錄操作指令碼了,現在將要公升級線上程式,束手無策

2、線上執行資料庫指令碼較多,其中某一條出現了問題,然後就不知道了從**開始了,或者漏掉了其中一兩條,難道要靠苦力慢慢去核對?

3、如何將備用的資料庫的表結構自動修正為主庫的結構,如何自動同步預設的基礎表資料

所以設計乙個自動檢測資料庫差異性並自動修復的工具顯得尤為重要,解放人力,保障效率
設計思路:

1、設計一種資料結構:能夠把標準庫的表結構和基礎資料輸出

2、用這個匯出的資料模版去驗證待驗證的資料庫

3、檢測工具發現差異,生成修復的sql語句自動執行或生成sql預覽,審核後在執行

4、完成資料庫的一致性

資料匯出結構:

<?xml version="1.0" encoding="gb2312"?>

name="user"

type="table"

time="2013-11-28 17:28:28"

comment="">

name="id"

type="varchar2(20)"

comment="主鍵"

iskey="true" />

name="name"

type="varchar2(50)"

comment="使用者姓名" />

name="password"

type="varchar2(20)"

comment="密碼" />

object>

name="zzjgdmbview"

type="view"

comment="檢視"

time="2013-11-28 19:16:28">

object>

name="sequ_zzjgdmb"

type="sequence"

comment="自增序列"

time="2013-11-28 19:15:28"

start="1"

incrementby="1"

table=""

key="" />

objects>

objects:包含所有的資料物件 表、檢視。序列

object:具體的資料庫物件

type:資料物件的分類標識包含table(表)、view(檢視)、sequence(序列)

name:物件名稱

time:建立時間

comment:備註

field:表中的字段屬性

name:欄位名

type:字段資料型別

comment:備註

iskey:是否主鍵

其中檢視中的文字是檢視的建立語句

2. 完整的工具源**:

有什麼疑問可以大家一起討論

修復資料庫和修復表

use master gosp dboption 資料庫名 single user true go dbcc checkdb 資料庫名 repair allow data loss gouse 資料庫名 goexec sp msforeachtable dbcc checktable 表名 repa...

資料庫備份修復 如何通過備份修復表資料庫

資料庫備份修復 how to repair tables database by backup 如何通過備份 修復表資料庫 is this possible?這可能嗎?please explain how to repair.請說明如何修理。and thanks 謝謝 this post may h...

資料庫表損壞的修復

用命令列訪問出現 開始時使用myisamchk r o home test test user.myi進行修復,出現錯誤 myisamchk error myisam sort buffer size is too small。df發現是mysql temp目錄太小,此錶太大。更改my.cnf檔案修...