02/10/2018, 00:23

[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:

create big data sqlserver

Để 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 heart

Tags: big data
0