MySql資料分割槽操作之新增分割槽操作
如果想在已經建好的表上進行分割槽,如果使用alter新增分割槽的話,mysql會提示錯誤:
複製程式碼 程式碼如下:
ERROR 1505
正確的方法是新建一個具有分割槽的表,結構一致,然後用insert into 分割槽表 select * from 原始表;
測試建立分割槽表檔案
複製程式碼 程式碼如下:
CREATE TABLE tr (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE(YEAR(purchased))
(
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (1995),
PARTITION p2 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (2005)
);
插入測試資料
複製程式碼 程式碼如下:
INSERT INTO tr VALUES
(1, 'desk organiser', '2003-10-15′),
(2, 'CD player', '1993-11-05′),
(3, 'TV set', '1996-03-10′),
(4, 'bookcase', '1982-01-10′),
(5, 'exercise bike', '2004-05-09′),
(6, 'sofa', '1987-06-05′),
(7, 'popcorn maker', '2001-11-22′),
(8, 'aquarium', '1992-08-04′),
(9, 'study desk', '1984-09-16′),
(10, 'lava lamp', '1998-12-25′);
查詢P2中的資料
複製程式碼 程式碼如下:
select * from tr where purchased between '1995-01-01′ and '2004-12-31′;
如果刪除P2,在刪除P2分割槽的同時,也會將其下的所有資料刪除
複製程式碼 程式碼如下:
alter table tr drop partition p2;
show create table tr;
CREATE TABLE `tr` (
`id` int(11) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
`purchased` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
再次插入資料時,會將原P2的資料插入至P3中
複製程式碼 程式碼如下:
INSERT INTO tr VALUES (11, 'pencil holder', '1995-07-12′);
ALTER TABLE tr DROP PARTITION p3;
SELECT * FROM tr WHERE purchased BETWEEN '1995-01-01′ AND '2004-12-31′;
建立一個新的測試表
複製程式碼 程式碼如下:
CREATE TABLE members (
id INT,
fname VARCHAR(25),
lname VARCHAR(25),
dob DATE
)
PARTITION BY RANGE(YEAR(dob)) (
PARTITION p0 VALUES LESS THAN (1970),
PARTITION p1 VALUES LESS THAN (1980),
PARTITION p2 VALUES LESS THAN (1990)
);
直接用alter table tablename add partition 方式再最後面新增分割槽
複製程式碼 程式碼如下:
ALTER TABLE members ADD PARTITION (PARTITION p3 VALUES LESS THAN (2000));
複製程式碼 程式碼如下:
ALTER TABLE members reorganize partition p0 into (
partition m0 values less than (1960),
partition m1 values less than (1970)
);
show create table members;
CREATE TABLE `members` (
`id` int(11) DEFAULT NULL,
`fname` varchar(25) DEFAULT NULL,
`lname` varchar(25) DEFAULT NULL,
`dob` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
使用 REORGANIZE PARTITION進行資料的合併與拆分,資料是沒有丟失的。
(詳細出處參考://)
如果用此方式在之前新增會報錯,只能用另一種合併拆分分割槽的方式操作。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3705/viewspace-2810682/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- INTERVAL分割槽表鎖分割槽操作
- 分割槽操作常用sqlSQL
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- Spark操作Hive分割槽表SparkHive
- 分割槽表attach detach操作
- 分割槽表的常用操作
- win10新增硬碟分割槽怎麼操作 win10硬碟如何增加新分割槽Win10硬碟
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 關於分割槽表的操作
- Sql Server系列:分割槽表操作SQLServer
- 高效靈活的分割槽操作
- mysql 分割槽MySql
- MySQL分割槽MySql
- Oracle11g INTERVAL分割槽新增分割槽策略Oracle
- 分割槽表入無分割槽的資料庫資料庫
- Oracle資料庫中分割槽表的操作方法Oracle資料庫
- oracle 分割槽表進行shrink操作Oracle
- oracle關於分割槽相關操作Oracle
- 關於分割槽表的move操作
- SQL Server表分割槽操作詳解SQLServer
- ORACLE分割槽表的概念及操作Oracle
- ORACLE分割槽表的操作應用Oracle
- oracle 分割槽表 概念以及常用操作Oracle
- 表分割槽操作大全_table partitioning
- MySQL資料表分割槽手記MySql
- mysql資料庫分割槽技術MySql資料庫
- unbuntu新增交換分割槽
- 理解MySQL分割槽MySql
- 搞懂MySQL分割槽MySql
- 【MYSQL】 分割槽表MySql
- MySql建立分割槽MySql
- MySQL 子分割槽MySql
- MySQL KEY分割槽MySql
- MySQL HASH分割槽MySql
- MySQL COLUMNS分割槽MySql
- MySQL LIST分割槽MySql
- MySQL RANGE分割槽MySql