DBImport v3.3 中文版發佈:數據庫數據互導及文檔生成工具(IT人員必備)

前言:

很久沒寫文了, 距離上一篇文章是3個月前的事了,雖然工做很忙,主要仍是缺乏寫做的內容和激情,因此沒怎麼動手。面試

以前有一個來月不斷面試不一樣層次來應聘的人員,頗有想寫文的衝動,後來仍是忍住了。數據庫

估計寫了也是那種說人壞話、恨鐵不成鋼的情緒文,沒啥養分,因此情緒過了就沒想寫了。框架

在公司除了管理上的事情以外,另外也研發了一套適用信息系統的快速開發框架,這個有機會再寫寫文和大夥分享了。 工具

下面言歸正文了。ui

背景:

關於這個DBImport工具,發佈的版本很少,僅有:V1.0、V2.0、V3.0、V3.2和今天發佈的V3.3。編碼

因爲本身平時用到這個工具(導數據、導數據腳本、生成數據庫文檔)的頻率並不頻繁,spa

加上上一個版本已經很穩定,基本知足我的需求,因此更新的頻率不高,從V3.0開始,一年多才發佈一個版本。3d

這次版本更新的動力主要來自(付費或非付費)用戶的需求和CYQ.Data底層框架的驅動。code

下面看看歷史正文: 對象

 

DBImport V3.3版本更新的內容以下:

 

1:增長MSSQL、MySql、Oracle間的數據互導時,同時轉換相關的字段說明。

PS:導數據的時候,把說明也帶過去,若是你想複製公司的一個數據庫,又沒有導入導出備份等權限時,用這工具導就O了。

 

2:數據庫腳本導出增長字段說明腳本。

PS:有了1,2也順理出來了。 

 

3:增長小數位的處理,各數據間互導時不會出現精度丟失。

PS:以前的版本在小數位上,若是須要精準導過去,須要手工處理下生成的表結構,改好小數再導,此次直接作足這方面的事了。 

 

4:數據庫文檔導出增長小數位字段顯示。

PS:有了3,4也順理出來了。 

 

5:增長N種數據類型的處理,這些數據類型可能不見常。

PS:這個說的比較泛,是由於把MSSQL的全部類型都給處理了,底層代碼也改了很多,因此東西太多就用更泛的詞來解釋了。

 

6:配置項增長是否使用存儲過程分頁設置。

PS:因爲底層CYQ.Data框架去掉Oracle的分頁存儲過程,對於MSSQL的分佈存儲過程也增長了配置項可不啓用,因此軟件上也多了這麼個配置項。

7:配置項增長如下操做項:

 
A:批量插入【包含主鍵】
B:批量插入【忽略主鍵】
C:批量更新【根據主鍵自動識別】
D:插入或更新【根據主鍵自動識別】
 

 

PS:這個功能很強大,經過D選項,幾乎能夠實現兩個數據庫間的數據同步,並且重複導N次也不怕不怕了。 


下載地址:
http://www.cyqdata.com/download/article-detail-42517

 

新版上圖:

 

分享本次版本更新遇到的問題:

1:MSSQL:

A:timestamp 類型,存儲的是二進制數據,其它數據庫類型是日期,須要特殊處理。

B:識別各數據庫版本號,能夠經過Connection對象的ServerVersion屬性獲取,之前居然沒在乎這個字段。

C:使用SqlBulkCopy批量插入,要注意數據長度問題,若是長度被截斷,會引起MSSQL服務直接掛掉,很變態的結果。 

D:numeric 類型木有對應的SqlDbType。

E:當where in id(1,2,3,4,...) 表達式直接上1萬時,MSSQL2000直接就超時掛了,其它版本數據庫正常。 

F:MSSQL2000 木有Xml字段,一樣也木有max相關的東西,都須要轉換其它類型處理。 

G:向MSSQL數據庫裏插二進制數據,能夠這麼整:

UPDATE AllType  SET
b5 = newid(),
--  b7='<aa>dddd</aa>'
a1 =( SELECT  *  FROM  OPENROWSET( BULK N ' C:\Users\cyq\Pictures\ico\taobao.ico ', SINGLE_BLOB)  AS aa)

WHERE id = 1

2:SQLite:

A:若是字段爲自增,那麼這個字段必須爲主鍵,並且只能存在這一個主鍵。

B:若是爲自增長,數據庫腳本關鍵字字義必須提早,不能後面定義,如:

正解的:
"ID"  INTEGER  PRIMARY  KEY AUTOINCREMENT  NOT  NULL,
錯誤的:
"ID"  INTEGER  AUTOINCREMENT  NOT  NULL,
PRIMARY  KEY ("ID") 

C:對於GUID類型的字段,因爲存儲結構爲16進制,因此查詢比較麻煩,須要進行如下的轉換後,才能進行比較查詢:

string gv=BitConverter.ToString(new Guid(「509e4e37-43ed-4e3d-b3bc-1c0929f0d151」).ToByteArray()).Replace("-", ""); 

最後的 條件就變成where id=x'gv這串東西'

3:Access:

A:對於GUID,正常是where id='509e4e37-43ed-4e3d-b3bc-1c0929f0d151',可是這種條件只有在查詢和刪除時是正常的,更新的時候,還得這麼寫:

where id='{509e4e37-43ed-4e3d-b3bc-1c0929f0d151}' 因此有事沒事都本身補加個括號吧。

4:MySql:

A:對於Text或Blob字段,不能設置爲主鍵。

B:對於TinyInt字段,想用0-255,應該定義成:TinyInt(3) UNSIGNED

C:只能存在一個自增列,若存在,必須定義爲主鍵。 

D:(中文內容或註釋)亂碼問題仍是去配置MySql安裝目錄下my.ini的編碼。 

5:Oracle:

A:對於設置爲Not Null 屬性的字段,不容許插入空值,解決的方法是插入一個空的字符串。

B:ORA-08002: 序列 SEQ1.CURRVAL 還沒有在此會話中定義,這個問題須要先調用SEQ1.nextval。

C:對於where id in(1,2,3,4,5...) 最大表達式爲1000,超過這個數,須要分拆成where id in(1,2,..1000) or id in(1001,1002...2000)...

D:批量執行多條語句時,通常能夠用:

begin
    語句1;
    語句2;
    語句3;
end;

可是也有用不了的時候,好比語句是comment on column 表.字段 is 說明。解決的方法是分折成一條一條執行了。

 

總結:

無!

Thanks~~~

相關文章
相關標籤/搜索