Đây là cách thanh lịch hơn bằng các tính năng mới nhất. Tôi sẽ sử dụng từ điển Unix (/ usr/share/dict/words) và sao chép nó vào dữ liệu PostgreSQL của tôi:
cp /usr/share/dict/words data/pg95/words.list
Sau đó, bạn có thể dễ dàng tạo ra một tấn không có mô tả cảm giác NHƯNG tìm kiếm được sử dụng các từ điển với các bước sau:
1) Tạo bảng và chức năng. getNArrayS nhận tất cả các phần tử trong một mảng và số lần nó cần ghép lại.
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;
Một khi bạn có tất cả tại chỗ, chạy chèn sử dụng 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);
Và bây giờ, chọn như thường lệ:
postgres=# select * from randomtable limit 3;
id | description
----+---------------------------------------------
1 | ultracentenarian splenodiagnosis manurially
2 | insequent monopolarity funipendulous
3 | ruminate geodic unconcludable
(3 rows)
Tại sao không 'CHỌN generate_series (1,10) AS id, md5 (random() :: text) AS descr; '? –
@AntonyHatchkins Không có lý do chính đáng. Đã sửa lỗi theo đề xuất của bạn. Cảm ơn – leonbloy