SQL Server 2005数据库分区数据的移入和移出

处理大数据集或者是“历史悠久”的数据集一个比较麻烦的问题就是有时需要往数据库表插入或者删除大量的数据。一般都是通过INSERT和 DELETE语句或者视图来完成数据的插入和删除,不过有了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_ID=OBJECT_ID('partTable') SQL Server 2005数据库分区数据的移入和移出

  现在分区已经建立好了,可以试着插入新的数据,然后选择数据,看看表里显示有什么数据。

de>以下是引用片段:
  --insert some sample da ta
  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 da ta
  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(20 de>))
  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两个表的情况。

  下一组命令就是用来转移数据的。我们用ALTER TABLE命令把数据从表newPartTable中把数据转移到分区表的第4分区里。我们选择第4分区是因为我们插入col1的值需要匹配分区函数的设置。完成数据的移植之后,可以输入select data,就会看到newPartTable的全部数据都移到了partTable里。而且表newPartTable在数据移出后依然存在。

de>以下是引用片段:
  --maketheswitch
  ALTER TABLE newPartTable SWITCHT OpartTable PARTITION4;
  GO
  --select the da ta
  SELECT * FROM partTable
  SELECT * FROM newPartTable

SQL Server 2005数据库分区数据的移入和移出

  数据移出

  反过来,有时候我们也需要从数据库的分区表里把数据转移到别的表里。那要怎么做呢?首先我们来创建一个名为"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 da ta
  SELECT * FROM partTable
  SELECT * FROM nonPartTable de>

  从下图可以看到,partTable里的数据已经转移到了表nonPartTable里。

SQL Server 2005数据库分区数据的移入和移出

  现在我们了解到数据分区功能对于移动和维护大量数据集有很大的作用。不过最后要说的是,虽然这个功能看起来很简单,但是在实施数据分区方案之前还要考虑很多因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值