[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