Popular dados em uma tabela sql server

novembro 5th, 2019 por franklin Leave a reply »

Caso precise fazer algum tipo de teste que seja necessário popular dados em uma tabela SQL Server, é possível executar o seguinte script para criar a tabela e já ‘inflar’ com os dados para testes. Os campos serão populados com datas aleatórias.

SQL da criação da tabela

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
)

SQL para popular os dados na tabela recém criada

-- Declara os tipos de variáveis que iremos utilizar
DECLARE @RowCount INT
DECLARE @RowString VARCHAR(10)
DECLARE @Random INT
DECLARE @UPPER INT
DECLARE @LOWER INT
DECLARE @InsertDate DATETIME
 
 
SET @LOWER = -730 --configura a data até 2 anos para trás(365*2)
SET @UPPER = -1 --configura a data no máximo até 1 dia atrás
SET @RowCount = 0 --configura a contagem de linhas
 
-- while para popular os dados na tabela
WHILE @RowCount < 3000000
BEGIN
	-- paranauê para calcular a data para inserção
	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

Fiz um resumão do link que encontrei:

https://mitchelsellers.com/blog/article/creating-random-sql-server-test-data

Advertisement

Deixe uma resposta