Aquí se trata de una forma más elegante usando las últimas características. Voy a utilizar el diccionario de Unix (/ usr/share/dict/words) y copiarlo en mis datos PostgreSQL:
cp /usr/share/dict/words data/pg95/words.list
A continuación, puede crear fácilmente una tonelada de ninguna descripción sentido, pero puede buscar usando palabras del diccionario con la siguientes pasos:
1) Crear tabla y función. getNArrayS obtiene todos los elementos en una matriz y la cantidad de veces que necesita concatenar.
CREATE TABLE randomTable(id serial PRIMARY KEY, description text);
CREATE OR REPLACE FUNCTION getNArrayS(el text[], count int) RETURNS text AS $$
SELECT string_agg(el[random()*(array_length(el,1)-1)+1], ' ') FROM generate_series(1,count) g(i)
$$
VOLATILE
LANGUAGE SQL;
Una vez que tenga todo en su lugar, ejecute el inserto usando CTE:
WITH t(ray) AS(
SELECT (string_to_array(pg_read_file('words.list')::text,E'\n'))
)
INSERT INTO randomTable(description)
SELECT getNArrayS(T.ray, 3) FROM T, generate_series(1,10000);
Y ahora, seleccione como de costumbre:
postgres=# select * from randomtable limit 3;
id | description
----+---------------------------------------------
1 | ultracentenarian splenodiagnosis manurially
2 | insequent monopolarity funipendulous
3 | ruminate geodic unconcludable
(3 rows)
Por qué no SELECT generate_series (1,10) AS id, md5 (random() :: text) AS descr; '? –
@AntonyHatchkins sin una buena razón. Solucionado después de tu sugerencia. Gracias – leonbloy