Ici, il est une façon plus élégante en utilisant les dernières fonctionnalités. Je vais utiliser le dictionnaire Unix (/ usr/share/dict/mots) et le copier dans mes données PostgreSQL:
cp /usr/share/dict/words data/pg95/words.list
Ensuite, vous pouvez facilement créer une tonne d'aucune description de sens, mais des recherches en utilisant les mots du dictionnaire avec le Étapes suivantes:
1) Créer une table et une fonction. getNArrayS obtient tous les éléments dans un tableau et le nombre de fois qu'il doit concaténer.
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;
Une fois que vous avez tous en place, exécutez l'insert en utilisant 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);
Et maintenant, sélectionnez comme d'habitude:
postgres=# select * from randomtable limit 3;
id | description
----+---------------------------------------------
1 | ultracentenarian splenodiagnosis manurially
2 | insequent monopolarity funipendulous
3 | ruminate geodic unconcludable
(3 rows)
Pourquoi ne pas 'SELECT generate_series (1,10) AS id, md5 (random() :: text) AS descr; '? –
@AntonyHatchkins Sans raison valable. Correction suite à votre suggestion. Merci – leonbloy