SQL Server 2005數據庫分區數據的移入和移出操作
SQL Server 2005數據分區可以使用SWITCH操作符輕松地在分區進行數據移入和移出。在SQL Server 2005里建立數據分區,那么現在可以進一步了解如何使用SWITCH操作符在分區里控制數據操作。下面我們通過舉例來說明。
我們先來一個簡單的例子。下面***組代碼創建分區函數和分區方案,并把新建的分區方案應用到新建表"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
接著我們可以運行以下命令來看看分區創建得如何。
de>以下是引用片段:
- SELECT *FROM sys.partitions
- WHERE OBJECT_IDOBJECT_ID=OBJECT_ID('partTable')
現在分區已經建立好了,可以試著插入新的數據,然后選擇數據,看看表里顯示有什么數據。
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
插入數據
我們現在來嘗試把另外一個表里的數據轉移到經分區的表里。首先我們需要創建一個新表,命名為"newPartTable",這個新建表跟分區的表有同樣的分區方案,但是我們還是需要在"col1"創建CHECK約束,使數據導入匹配的分區表里。這些數據***會被導入到分區表的第4分區里。因此我們要確保 CHECK約束要跟分區函數的創建相匹配。另外,我們還需要指明該值不能為NULL。如下所示:
col1 INT CHECK (col1 > 30 AND col1 <= 40 AND col1 IS NOT NULL
創建完表之后我們插入一些數據,然后再select已插入的數據。
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兩個表的情況。
#p#
下一組命令就是用來轉移數據的。我們用ALTER TABLE命令把數據從表newPartTable中把數據轉移到分區表的第4分區里。我們選擇第4分區是因為我們插入col1的值需要匹配分區函數的設置。完成數據的移植之后,可以輸入select data,就會看到newPartTable的全部數據都移到了partTable里。而且表newPartTable在數據移出后依然存在。
de>以下是引用片段:
--maketheswitch
- ALTER TABLE newPartTable SWITCHT OpartTable PARTITION4;
- GO
--select the data
- SELECT * FROM partTable
- SELECT * FROM newPartTable
數據移出
反過來,有時候我們也需要從數據庫的分區表里把數據轉移到別的表里。那要怎么做呢?首先我們來創建一個名為"nonPartTable"的表,分區方案同上。注意,這個表中的列只含有基本的信息,不需要創建CHECK約束。
創建新表后,我們還是使用ALTER TABLE命令來把第1分區里的"partTable"表中的數據轉移到新建表"nonPartTable"中。第1分區里的數據是所有"col1"值小于10的條目。
轉移數據之后,我們來執行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里的數據已經轉移到了表nonPartTable里。
現在我們了解到數據分區功能對于移動和維護大量數據集有很大的作用。不過***要說的是,雖然這個功能看起來很簡單,但是在實施數據分區方案之前還要考慮很多因素。
本文就介紹到這里,如果想了解更多SQL Server數據庫的操作,可以到我們網站的SQL Server頻道:http://database.51cto.com/sqlserver/,謝謝!
【編輯推薦】