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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark操作Hive分割槽表SparkHive
- win10新增硬碟分割槽怎麼操作 win10硬碟如何增加新分割槽Win10硬碟
- mysql 分割槽MySql
- Linux 新增LVM分割槽及LVM分割槽擴容LinuxLVM
- MySQL資料表分割槽手記MySql
- 理解MySQL分割槽MySql
- 搞懂MySQL分割槽MySql
- 【MYSQL】 分割槽表MySql
- MySql建立分割槽MySql
- unbuntu新增交換分割槽
- MySQL 分割槽表探索MySql
- MySQL的分割槽(一)MySql
- MySQL的分割槽(二)MySql
- 調整分割槽後分割槽不見的資料找到方法
- Linux分割槽方案、分割槽建議Linux
- Linux 擴充套件磁碟分割槽(命令列操作)Linux套件命令列
- 分割槽表之自動增加分割槽(11G)
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- linux 新增磁碟 分割槽掛載Linux
- 用檔案新增Swap分割槽
- MySQL分割槽如何遷移MySql
- Mysql表分割槽實現MySql
- mysql 進行表分割槽MySql
- Mysql表分割槽實操MySql
- Mysql 的分割槽型別MySql型別
- Oracle資料庫分割槽表SPLIT操作導致歸檔瘋漲Oracle資料庫
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- oracle分割槽表和非分割槽表exchangeOracle
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- MapReduce實現之Reduce端重分割槽Join操作最佳化!
- zabbix上對mysql資料庫做分割槽表MySql資料庫
- MySQL的nnodb引擎表資料分割槽儲存MySql
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- openGauss 分割槽
- 分割槽Partition