Advertisements
How do we insert or load new data into partition table.
use Test_Tbl_Partition
select min(Date_Col),max(Date_Col) from [tbl_partition_test]
-- 2025-01-01 00:00:00.0000000 2025-01-15 00:00:00.0000000
select * from [tbl_partition_test]
-- create target table
CREATE TABLE tbl_partition_Staging (
ID Int identity NOT NULL,
Date_Col datetime2(7) NOT NULL,
CONSTRAINT [PK_C1810429_tbl_partition_Staging] PRIMARY KEY CLUSTERED
(
[ID] ASC,
[Date_Col] ASC
)
) ON [PRIMARY];
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-15 00:05:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-15 00:06:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-15 00:07:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-15 00:08:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-15 00:09:00.0000000')
select * from tbl_partition_Staging
--Get min date as new partition's split point(left bound)
SELECT MIN(Date_Col) FROM tbl_partition_Staging
--Create new partition for new data
ALTER PARTITION SCHEME PS_myPartitionScheme NEXT USED [Primary];
ALTER PARTITION FUNCTION PF_myDateRange () SPLIT RANGE('2025-01-15 00:05:00.0000000');
--drop CHECK if exists
ALTER TABLE tbl_partition_Staging DROP CONSTRAINT if exists ck_Min_Date_Col;
--ALTER TABLE tbl_partition_Staging DROP CONSTRAINT IF EXISTS ck_Min_Date_Col;
ALTER TABLE tbl_partition_Staging WITH CHECK ADD CONSTRAINT ck_Min_Date_Col CHECK (Date_Col IS NOT NULL AND Date_Col >= '2025-01-15 00:05:00.0000000')
--Switch
ALTER TABLE tbl_partition_Staging SWITCH TO [tbl_partition_test] PARTITION $PARTITION.PF_myDateRange('2025-01-15 00:05:00.0000000');
--load and repeat the process for each new data
------------===================
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-16 00:10:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-16 00:11:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-16 00:12:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-16 00:13:00.0000000')
insert into tbl_partition_Staging ([Date_Col]) values ('2025-01-16 00:14:00.0000000')
select * from tbl_partition_Staging
--Get min date as new partition's split point(left bound)
SELECT MIN(Date_Col) FROM tbl_partition_Staging
--Create new partition for new data
ALTER PARTITION SCHEME PS_myPartitionScheme NEXT USED [Primary];
ALTER PARTITION FUNCTION PF_myDateRange () SPLIT RANGE('2025-01-16 00:10:00.0000000');
--drop CHECK if exists
ALTER TABLE tbl_partition_Staging DROP CONSTRAINT ck_Min_Date_Col;
--ALTER TABLE tbl_partition_Staging DROP CONSTRAINT IF EXISTS ck_Min_Date_Col;
ALTER TABLE tbl_partition_Staging WITH CHECK ADD CONSTRAINT ck_Min_Date_Col CHECK (Date_Col IS NOT NULL AND Date_Col >= '2025-01-16 00:10:00.0000000')
--Switch
ALTER TABLE tbl_partition_Staging SWITCH TO [tbl_partition_test] PARTITION $PARTITION.PF_myDateRange('2025-01-16 00:10:00.0000000');
--------====