sqlserver與mysql中vachar(n)中遇到的坑

 

前兩天在作將mysql的數據表導入到sqlserver當中。html

本人比較愚笨,操做方法 是先將mysql的數據表處處爲insert腳本,再在sqlserver中執行sql腳本mysql

在網上看了一下那些方法 ,感受很迷,若是有更好更簡單的辦法請大神指教。畢竟這種辦法真的仍是挺痛苦的。好比我有一張表的數據有10W條。哇塞,根本不能直接插入,須要分段來,並且還要去掉mysql字段會自動加的分號。數據多了真的很痛苦,電腦有時候還要直接卡死。sql

遇到了 兩個問題。數據庫

第一:若是mysql中的主鍵是自動增加的話,直接插入會報:sqlserver

解決辦法,在插入以前寫上這麼一句:SET IDENTITY_INSERT table ONspa

固然在insert完成以後不要忘記關閉: SET  IDENTITY_INSERT table OFF3d

若是不關閉的話 你在下次再想對另一張表這樣操做的時候,又會報錯server

因此,你打開了就要記得關上。htm

第二:vachar(n)在兩種數據庫中的區別。blog

在導入數據的時候,我就明顯感受到mysql中的vachar(400)要比sqlserver中的vachar(400)存入的數據更多。若是數據庫中字段長度不夠的時候就會報:將截斷字符串或二進制數據

而後就谷歌了一下究竟是什麼區別。

而後得知 在mysql5.0版本以上,vachar(n)能夠存放的 字符個數就是n,而sqlserver中的vachar(n),這裏的n表示的是 字節數,因此sqlserver中的 vachar(n)就只能存放mysql的 一半吧。

要想將mysql的vachar(n)轉換到sqlserver中,最好sqlserver存入vachar(2n)吧,這樣能保證你的全部數據都不會報「將截斷字符串或二進制數據」這個錯誤

這裏有一篇博文介紹了mysql中vachar的 詳情,我的感受還比較能夠,附上連接:

MySql中的varchar類型:http://www.cnblogs.com/doit8791/archive/2012/05/28/2522556.html

相關文章
相關標籤/搜索