[SQLSERVER] Hướng dẫn tạo dữ liệu lớn (Big Data) mẫu test trong sql
Trong lập trình ứng dụng, nhiều lúc các bạn muốn test dữ liệu khoảng vài chục triệu record hoặc vài tỷ ( Big Data SQLSERVER ), nhưng chúng ta không có dữ liệu lớn vậy để test. Chính vì vậy, bài viết này mình sẽ hướng dẫn các tạo sử T-SQL để tạo ra bảng ...
Trong lập trình ứng dụng, nhiều lúc các bạn muốn test dữ liệu khoảng vài chục triệu record hoặc vài tỷ (Big Data SQLSERVER), nhưng chúng ta không có dữ liệu lớn vậy để test.
Chính vì vậy, bài viết này mình sẽ hướng dẫn các tạo sử T-SQL để tạo ra bảng dữ liệu lớn theo số record, mình nhập vào để test dữ liệu.
Đầu tiên, các bạn tạo Table với tên TestTableSize với cấu trúc như source code bên dưới:

Để biến @Rowcount, các bạn nhập vào số dòng muốn tạo nhé.
CREATE TABLE dbo.TestTableSize ( MyKeyField VARCHAR(10) NOT NULL, MyDate1 DATETIME NOT NULL, MyDate2 DATETIME NOT NULL, MyDate3 DATETIME NOT NULL, MyDate4 DATETIME NOT NULL, MyDate5 DATETIME NOT NULL )
- Tiếp theo, mình sẽ sử dụng một hàm while, để tạo dữ liệu random.
Các bạn lưu ý, là phải đặt trong transaction để sql thực hiện nhanh hơn nhé.
DECLARE @RowCount INT
DECLARE @RowString VARCHAR(10)
DECLARE @Random INT
DECLARE @Upper INT
DECLARE @Lower INT
DECLARE @InsertDate DATETIME
SET @Lower = -730
SET @Upper = -1
SET @RowCount = 0
begin tran
WHILE @RowCount < 300000000
BEGIN
SET @RowString = CAST(@RowCount AS VARCHAR(10))
SELECT @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SET @InsertDate = DATEADD(dd, @Random, GETDATE())
INSERT INTO TestTableSize
(MyKeyField
,MyDate1
,MyDate2
,MyDate3
,MyDate4
,MyDate5)
VALUES
(REPLICATE('0', 10 - DATALENGTH(@RowString)) + @RowString
, @InsertDate
,DATEADD(dd, 1, @InsertDate)
,DATEADD(dd, 2, @InsertDate)
,DATEADD(dd, 3, @InsertDate)
,DATEADD(dd, 4, @InsertDate))
SET @RowCount = @RowCount + 1
END
commit
Vậy là xong, chúc các bạn thành công!
HAPPY CODING ![]()