El problema en el que estoy trabajando es la carga random de datos en una tabla para propósitos de pruebas.
Estuve buscando alguna herramienta que ya lo hiciera (y las hay sólo que prácticamente todas son de pago) pero en realidad como lo que necesitaba era realmente simple decide hacerlo por medio de un sencillo script.
Primero necesitamos contar con una tabla:
Expliquemos un poco cada línea:
Primero necesitamos contar con una tabla:
CREATE TABLE foy.test
(
    test_id 		uuid 		DEFAULT uuid_generate_v4(),
    client_id		integer		NOT NULL,
    first_name		text,
    last_name		text,
    downloaded_at	timestamp,
    is_active		boolean		NOT NULL DEFAULT FALSE
);
INSERT INTO foy.test
SELECT 
	uuid_generate_v4(), -- test_id
	FLOOR(RANDOM()*(10000000- 100000 + 1)) + 100000, --client id
	(array['Peter', 'Kim', 'Lou', 'Jhon', 'Set','Carl','Karen', 'Marco','Tim','Marie'])[floor(random() * 10 + 1)] -- first name
	(array['Kent', 'Foster', 'Lee', 'Smith', 'Young','Clark','Hill', 'Brodt','Scott','Reed'])[floor(random() * 10 + 1)] -- last name
	clock_timestamp()  - (random() * INTERVAL '100 days' ), -- downloaded_at
	(case when 
    	random() > 0.8 then true
        	else false
	end) -- is_active
FROM generate_series(1,500000);
uuid_generate_v4(), -- test_id
FLOOR(RANDOM()*(10000000- 100000 + 1)) + 100000, --client id
(array['Peter', 'Kim', 'Lou', 'Jhon', 'Set','Carl','Karen', 'Marco','Tim','Marie'])[floor(random() * 10 + 1)] -- first name
(array['Kent', 'Foster', 'Lee', 'Smith', 'Young','Clark','Hill', 'Brodt','Scott','Reed'])[floor(random() * 10 + 1)] -- last name
clock_timestamp()  - (random() * INTERVAL '100 days' ), -- downloaded_at
	(case when 
    	random() > 0.8 then true
        	else false
	end) -- is_active
FROM generate_series(1,500000);
Si bien puede que no sea la forma más eficiente de hacer un llenado de valores aleatorios en tablas, ésta al menos resulta práctica y rápida en escenarios simples.
 
 
0 comments:
Publicar un comentario