SQL Server 2005数据库分区数据的移入和移出
处理大数据集或者是“历史悠久”的数据集一个比较麻烦的问题就是有时需要往数据库表插入或者删除大量的数据。一般都是通过INSERT和DELETE语句或者视图来完成数据的插入和删除,不过有了SQL Server 2005数据分区,这个工作就简单了很多,可以使用SWITCH操作符可以轻松地在分区进行数据移入和移出。请问专家具体如何实现?
专家解答:
如果你已经知道如果在SQL Server 2005里建立数据分区,那么现在可以进一步了解如何使用SWITCH操作符在分区里控制数据操作。下面我们通过举例来说明。
我们先来一个简单的例子。下面第一组代码创建分区函数和分区方案,并把新建的分区方案应用到新建表"partTable"中。
以下是引用片段:
-- 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
接着我们可以运行以下命令来看看分区创建得如何。
以下是引用片段:
SELECT *
FROM sys.partitions
WHERE OBJECT_ID = OBJECT_ID('partTable')
现在分区已经建立好了,可以试着插入新的数据,然后选择数据,看看表里显示有什么数据。
以下是引用片段:
-- 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已插入的数据。