今天碰到一個茶包
有個一百多G的DB ,有兩個非常大的TABLE
我需要複製這個DB的結構,而每個table只留約幾條資料給大陸的RD人員implement
DB在 A server上
我先在B server,複製xxDB的schema跟table
使用data compare 7 去比對table ,每個table選五筆資料,然後產生sql script
使用SSMS,直接塞到新的table裡面去
但是後來問題,兩個很大的table,讓datacompare在比對兩個DB的這個table時
在我電腦的暫存檔就讓HDD爆惹~超過30G
一個table暫存的table超過30G,這像話嗎像話嗎
後來我換了一個笨方法 使用select into
作弊 參考網址感謝這位壞掉先生
SELECT INTO可以into進去暫存的table也可以into實體table,
INSERT INTO只能into實體的table。
實體:SELECT ~ INTO table2 FROM table1
虛擬:SELECT ~ INTO #table2 FROM table1
也就是說,使用SELECT INTO
後面的table2如果本來就有,他就直接塞資料;
如果本來就沒有table2,他會新建一個table2,再塞資料。
加了#的意義就是,into進去後,
把Query關掉,重新開啟一個Query,table2就不見了,等於是暫存性的。
當然假如不加#的話,table2就會一直保留著。
============================================
select 5筆紀錄 into new table
在B server弄新的一樣名稱的table
data compare 出script
再B server上面下script 把script中新table名稱改成原本要塞入的table 名稱
成功
結論是
1.幸好只有兩個
2.我的T-sql語法要多加油,這方法真的有點鳥
有個一百多G的DB ,有兩個非常大的TABLE
我需要複製這個DB的結構,而每個table只留約幾條資料給大陸的RD人員implement
DB在 A server上
我先在B server,複製xxDB的schema跟table
使用data compare 7 去比對table ,每個table選五筆資料,然後產生sql script
使用SSMS,直接塞到新的table裡面去
但是後來問題,兩個很大的table,讓datacompare在比對兩個DB的這個table時
在我電腦的暫存檔就讓HDD爆惹~超過30G
一個table暫存的table超過30G,這像話嗎像話嗎
後來我換了一個笨方法 使用select into
SELECT INTO可以into進去暫存的table也可以into實體table,
INSERT INTO只能into實體的table。
實體:SELECT ~ INTO table2 FROM table1
虛擬:SELECT ~ INTO #table2 FROM table1
也就是說,使用SELECT INTO
後面的table2如果本來就有,他就直接塞資料;
如果本來就沒有table2,他會新建一個table2,再塞資料。
加了#的意義就是,into進去後,
把Query關掉,重新開啟一個Query,table2就不見了,等於是暫存性的。
當然假如不加#的話,table2就會一直保留著。
============================================
select 5筆紀錄 into new table
在B server弄新的一樣名稱的table
data compare 出script
再B server上面下script 把script中新table名稱改成原本要塞入的table 名稱
成功
結論是
1.幸好只有兩個
2.我的T-sql語法要多加油,這方法真的有點鳥
留言
張貼留言