Gerando dados aleatórios no PostgreSQL

Como gerar dados aleatórios randômicos no PostgreSQL?

Dados do tipo INT, BIGINT (número sem vírgula)

-- Generally, to generate a random number between two integers l and h, you use the following statement:

SELECT floor(random() * (h-l+1) + l)::int;

Dados do tipo REAL, DOUBLE, NUMERIC (número com vírgula)

SELECT random();
-- 0.867320362944156
--To generate a random number between 1 and 11, you use the following statement:
SELECT random() * 10 + 1 AS RAND_1_11;
-- 7.75778411421925

Dados do tipo TEXT (texto)

CREATE OR REPLACE FUNCTION random_string(length INTEGER) 
RETURNS TEXT 
AS
$$
DECLARE  
chars TEXT[] := '{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}';  
result TEXT:= '';  
i INTEGER:= 0;
BEGIN  
IF length < 0 then    
RAISE EXCEPTION 'Given length cannot be less than 0';  
END IF;  
FOR i IN 1..length LOOP    
result := result || chars[1+random()*(array_length(chars, 1)-1)];  
END LOOP;  
RETURN result;
END;
$$ LANGUAGE plpgsql;

Referência https://stackoverflow.com/a/3972983/2789895

Gerando uma lista com vários números aleatórios

SELECT random()FROM generate_series(1,50);

INSERT

INSERT INTO tabela_destinoSELECT 'hello' AS name, random() AS valueFROM generate_series(1,50);

Referência

PostgreSQL Tutorial
https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-random-range/

How to create lots of sample timeseries data
https://www.timescale.com/blog/how-to-create-lots-of-sample-time-series-data-with-postgresql-generate_series/

How to INSERT from SELECT
https://dba.stackexchange.com/questions/2973/how-to-insert-values-into-a-table-from-a-select-query-in-postgresql

You should also read:

Sharding em Banco de Dados

Esse artigo explica muito bem os conceitos de sharding. https://www.digitalocean.com/community/tutorials/understanding-database-sharding Este vídeo explica sobre diferentes 3 tipos de sharding e de que forma…