新聞中心
SQL Server 2005數(shù)據(jù)分區(qū)可以使用SWITCH操作符輕松地在分區(qū)進(jìn)行數(shù)據(jù)移入和移出。在SQL Server 2005里建立數(shù)據(jù)分區(qū),那么現(xiàn)在可以進(jìn)一步了解如何使用SWITCH操作符在分區(qū)里控制數(shù)據(jù)操作。下面我們通過(guò)舉例來(lái)說(shuō)明。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的長(zhǎng)海網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
我們先來(lái)一個(gè)簡(jiǎn)單的例子。下面***組代碼創(chuàng)建分區(qū)函數(shù)和分區(qū)方案,并把新建的分區(qū)方案應(yīng)用到新建表"partTable"中。
de>以下是引用片段:
--create partition function
- CREATE PARTITION FUNCTION partRange1(INT)
- AS RANGE LEFT FOR VALUES(10,20,30);
- GO
--create partition scheme
- CREATE PARTITION SCHEME partScheme1
- AS PARTITION partRange1
- ALL TO([PRIMARY]);
- GO
--create table that uses this partitioning scheme
- CREATE TABLE partTable(col1 INT,col2 VARCHAR(20))
- ON partScheme1(col1);
- GO
接著我們可以運(yùn)行以下命令來(lái)看看分區(qū)創(chuàng)建得如何。
de>以下是引用片段:
- SELECT *FROM sys.partitions
- WHERE OBJECT_IDOBJECT_ID=OBJECT_ID('partTable')
現(xiàn)在分區(qū)已經(jīng)建立好了,可以試著插入新的數(shù)據(jù),然后選擇數(shù)據(jù),看看表里顯示有什么數(shù)據(jù)。
de>以下是引用片段:
--insert some sample data
- INSERT INTO partTable(col1,col2)VALUES(5,'partTable')
- INSERT INTO partTable(col1,col2)VALUES(6,'partTable')
- INSERT INTO partTable(col1,col2)VALUES(7,'partTable')
--select the data
- SELECT * FROM partTable
插入數(shù)據(jù)
我們現(xiàn)在來(lái)嘗試把另外一個(gè)表里的數(shù)據(jù)轉(zhuǎn)移到經(jīng)分區(qū)的表里。首先我們需要?jiǎng)?chuàng)建一個(gè)新表,命名為"newPartTable",這個(gè)新建表跟分區(qū)的表有同樣的分區(qū)方案,但是我們還是需要在"col1"創(chuàng)建CHECK約束,使數(shù)據(jù)導(dǎo)入匹配的分區(qū)表里。這些數(shù)據(jù)***會(huì)被導(dǎo)入到分區(qū)表的第4分區(qū)里。因此我們要確保 CHECK約束要跟分區(qū)函數(shù)的創(chuàng)建相匹配。另外,我們還需要指明該值不能為NULL。如下所示:
col1 INT CHECK (col1 > 30 AND col1 <= 40 AND col1 IS NOT NULL
創(chuàng)建完表之后我們插入一些數(shù)據(jù),然后再select已插入的數(shù)據(jù)。
de>以下是引用片段:
--switchin
- CREATE TABLE newPartTable(col1 INT CHECK(col1>30 AND col1<=40 AND col1 IS NOT NULL),
- col2 VARCHAR(20de>))
- GO
--insertsomesampledataintonewtable
- INSERT INTO newPartTable(col1,col2) VALUES(31,'newPartTable')
- INSERT INTO newPartTable(col1,col2) VALUES(32,'newPartTable')
- INSERT INTO newPartTable(col1,col2) VALUES(33,'newPartTable')
--selectthedata
- SELECT * FROM partTable
- SELECT * FROM newPartTable
這里我們可以看到partTable和newPartTable兩個(gè)表的情況。
#p#
下一組命令就是用來(lái)轉(zhuǎn)移數(shù)據(jù)的。我們用ALTER TABLE命令把數(shù)據(jù)從表newPartTable中把數(shù)據(jù)轉(zhuǎn)移到分區(qū)表的第4分區(qū)里。我們選擇第4分區(qū)是因?yàn)槲覀儾迦隿ol1的值需要匹配分區(qū)函數(shù)的設(shè)置。完成數(shù)據(jù)的移植之后,可以輸入select data,就會(huì)看到newPartTable的全部數(shù)據(jù)都移到了partTable里。而且表newPartTable在數(shù)據(jù)移出后依然存在。
de>以下是引用片段:
--maketheswitch
- ALTER TABLE newPartTable SWITCHT OpartTable PARTITION4;
- GO
--select the data
- SELECT * FROM partTable
- SELECT * FROM newPartTable
數(shù)據(jù)移出
反過(guò)來(lái),有時(shí)候我們也需要從數(shù)據(jù)庫(kù)的分區(qū)表里把數(shù)據(jù)轉(zhuǎn)移到別的表里。那要怎么做呢?首先我們來(lái)創(chuàng)建一個(gè)名為"nonPartTable"的表,分區(qū)方案同上。注意,這個(gè)表中的列只含有基本的信息,不需要?jiǎng)?chuàng)建CHECK約束。
創(chuàng)建新表后,我們還是使用ALTER TABLE命令來(lái)把第1分區(qū)里的"partTable"表中的數(shù)據(jù)轉(zhuǎn)移到新建表"nonPartTable"中。第1分區(qū)里的數(shù)據(jù)是所有"col1"值小于10的條目。
轉(zhuǎn)移數(shù)據(jù)之后,我們來(lái)執(zhí)行select the data命令。
de>以下是引用片段:
--switchout
- CREATE TABLE nonPartTable(col1 INT,col2 VARCHAR(20))
- ON[primary];
- GO
--make the switch
- ALTER TABLE partTable SWITCH PARTITION1 TO nonPartTable;
- GO
--select the data
- SELECT * FROM partTable
- SELECT * FROM nonPartTablede>
從下圖可以看到,partTable里的數(shù)據(jù)已經(jīng)轉(zhuǎn)移到了表nonPartTable里。
現(xiàn)在我們了解到數(shù)據(jù)分區(qū)功能對(duì)于移動(dòng)和維護(hù)大量數(shù)據(jù)集有很大的作用。不過(guò)***要說(shuō)的是,雖然這個(gè)功能看起來(lái)很簡(jiǎn)單,但是在實(shí)施數(shù)據(jù)分區(qū)方案之前還要考慮很多因素。
本文就介紹到這里,如果想了解更多SQL Server數(shù)據(jù)庫(kù)的操作,可以到我們網(wǎng)站的SQL Server頻道:http://database./sqlserver/,謝謝!
網(wǎng)站題目:SQLServer2005數(shù)據(jù)庫(kù)分區(qū)數(shù)據(jù)的移入和移出操作
URL分享:http://www.5511xx.com/article/dpogipd.html


咨詢(xún)
建站咨詢(xún)
