關于數(shù)據(jù)庫文件mdf:
1.如果用navicat新建一個數(shù)據(jù)庫复亏,那么此時他會默認創(chuàng)建的是ndf類型的文件做入,而且文件存放路徑在sql server默認路徑(一般是安裝路徑下的某個路徑。即使你修改了默認路徑蛉加,navicat的默認存放路徑也不會變)蚜枢。所以每次創(chuàng)建數(shù)據(jù)庫要修改為mdf文件,修改mdf和ldf文件的路徑(兩個要分別改)针饥。
2.mdf文件可以復用厂抽。在Microsoft SQL Server Management Studio右擊目標數(shù)據(jù)庫,執(zhí)行分離丁眼。然后將mdf與ldf(有時沒有l(wèi)df也可以)復制到目標機器上筷凤。在目標機器的管理工具中,右擊選擇附加户盯,選擇剛才的mdf與ldf文件嵌施,即可使用饲化。
其中:
(1)當一塊磁盤快滿了時莽鸭,經常需要如此操作吗伤,將一些數(shù)據(jù)遷移到新盤中。請一并將默認存放路徑修改硫眨。
右擊本機數(shù)據(jù)庫足淆,選擇屬性,選擇數(shù)據(jù)庫設置礁阁,修改默認位置巧号。
(2)經常會有人只給你mdf文件,但沒有l(wèi)df姥闭,可以在附加中將ldf文件刪除丹鸿。 ? 一般也能附加上,如果不行再找同事要棚品。
(3)如果用navicat默認生成了數(shù)據(jù)庫文件靠欢,發(fā)現(xiàn)是ndf類型,則需要先分離铜跑,把后綴ndf改成mdf门怪,在本機再附加一次:數(shù)據(jù)庫文件選擇剛才改成mdf的文件。之后再分離锅纺,將mdf與ldf拷貝走掷空。如不這樣,拷貝到目標機器后無法正常讀取ldf文件囤锉,即使吧ldf文件刪除也不行坦弟。
關于性能:
1.用sql server處理億級以下的數(shù)據(jù)是很快的,第一次接觸的話你會因其速度感覺到驚喜官地。但如果要是處理億級以上的數(shù)據(jù)减拭,真的讓人頭痛,能分表就分表吧区丑。
關于導出文件拧粪、或者說將表跨數(shù)據(jù)遷移:
1.通過bcp導出成csv文件是很快的,真的沧侥,沒具體測可霎,大約3-5分鐘能導出1億數(shù)據(jù)(不過到了4億多左右會變慢很多,具體原因沒研究宴杀,不知道是數(shù)據(jù)庫還是文件系統(tǒng)的問題)癣朗,這是一個不錯的遷移方式,導出成的csv文件再用awk切分為多個文件旺罢,相當于分表旷余,再讓其他數(shù)據(jù)庫讀取文件绢记。
bcp的命令舉例如下:
導入:bcp hk_red.dbo.LineDataHK in F:\HK_data\導入文件\tablename.csv -e F:\HK_data\導入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password"
導出:bcp hk_red.dbo.LineDataHK out F:\HK_data\導入文件\tablename.csv -e F:\HK_data\導入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password"?
按sql導入:bcp hk_red.dbo.LineDataHK queryout F:\HK_data\導入文件\tablename.csv -e F:\HK_data\導入文件\error.txt -c -T -t"|@@|@|" -Uusername -P"password"
2.小的表可以用navicat直接傳輸,很方便正卧。而且會處理字符集的問題蠢熄,例如中文,用bcp處理的文件炉旷,中文的字符集是微軟的签孔,不是utf8。
3.當然窘行,bcp導出的文件也是有方法轉成utf8的饥追,需要借助工具cygwin。
4.導入文件報錯:右截斷
這是因為你的分割符在數(shù)據(jù)中出現(xiàn)了罐盔,導致按分隔符切分后會比原表多出一列到多列但绕。
解決辦法就是到出的分隔符設定為兩到三個,例如:|@| ? 這種惶看。
如果還是不行捏顺,要么報錯的行單獨特殊處理,要么分隔符在多幾個碳竟。