很久沒寫文了, 距離上一篇文章是3個月前的事了,雖然工做很忙,主要仍是缺乏寫做的內容和激情,因此沒怎麼動手。面試
以前有一個來月不斷面試不一樣層次來應聘的人員,頗有想寫文的衝動,後來仍是忍住了。數據庫
估計寫了也是那種說人壞話、恨鐵不成鋼的情緒文,沒啥養分,因此情緒過了就沒想寫了。框架
在公司除了管理上的事情以外,另外也研發了一套適用信息系統的快速開發框架,這個有機會再寫寫文和大夥分享了。 工具
下面言歸正文了。ui
關於這個DBImport工具,發佈的版本很少,僅有:V1.0、V2.0、V3.0、V3.2和今天發佈的V3.3。編碼
因爲本身平時用到這個工具(導數據、導數據腳本、生成數據庫文檔)的頻率並不頻繁,spa
加上上一個版本已經很穩定,基本知足我的需求,因此更新的頻率不高,從V3.0開始,一年多才發佈一個版本。3d
這次版本更新的動力主要來自(付費或非付費)用戶的需求和CYQ.Data底層框架的驅動。code
下面看看歷史正文: 對象
PS:導數據的時候,把說明也帶過去,若是你想複製公司的一個數據庫,又沒有導入導出備份等權限時,用這工具導就O了。
PS:有了1,2也順理出來了。
PS:以前的版本在小數位上,若是須要精準導過去,須要手工處理下生成的表結構,改好小數再導,此次直接作足這方面的事了。
PS:有了3,4也順理出來了。
PS:這個說的比較泛,是由於把MSSQL的全部類型都給處理了,底層代碼也改了很多,因此東西太多就用更泛的詞來解釋了。
PS:因爲底層CYQ.Data框架去掉Oracle的分頁存儲過程,對於MSSQL的分佈存儲過程也增長了配置項可不啓用,因此軟件上也多了這麼個配置項。
PS:這個功能很強大,經過D選項,幾乎能夠實現兩個數據庫間的數據同步,並且重複導N次也不怕不怕了。
下載地址:http://www.cyqdata.com/download/article-detail-42517
新版上圖:
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數據庫裏插二進制數據,能夠這麼整:
A:若是字段爲自增,那麼這個字段必須爲主鍵,並且只能存在這一個主鍵。
B:若是爲自增長,數據庫腳本關鍵字字義必須提早,不能後面定義,如:
C:對於GUID類型的字段,因爲存儲結構爲16進制,因此查詢比較麻煩,須要進行如下的轉換後,才能進行比較查詢:
string gv=BitConverter.ToString(new Guid(「509e4e37-43ed-4e3d-b3bc-1c0929f0d151」).ToByteArray()).Replace("-", "");
最後的 條件就變成where id=x'gv這串東西'
A:對於GUID,正常是where id='509e4e37-43ed-4e3d-b3bc-1c0929f0d151',可是這種條件只有在查詢和刪除時是正常的,更新的時候,還得這麼寫:
where id='{509e4e37-43ed-4e3d-b3bc-1c0929f0d151}' 因此有事沒事都本身補加個括號吧。
A:對於Text或Blob字段,不能設置爲主鍵。
B:對於TinyInt字段,想用0-255,應該定義成:TinyInt(3) UNSIGNED
C:只能存在一個自增列,若存在,必須定義爲主鍵。
D:(中文內容或註釋)亂碼問題仍是去配置MySql安裝目錄下my.ini的編碼。
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:批量執行多條語句時,通常能夠用:
可是也有用不了的時候,好比語句是comment on column 表.字段 is 說明。解決的方法是分折成一條一條執行了。
無!
Thanks~~~