Here is the random selection query
SELECT NAME, SEX,
CURRENT_DATE - CAST(RANDOM()*365.25*100 AS INTEGER) AS DOB,
(SELECT SURNAME FROM SURNAMES ORDER BY RANDOM() LIMIT 1) AS SURNAME
FROM NAMES ORDER BY RANDOM() LIMIT 1;
Here is the procedure:
CREATE OR REPLACE FUNCTION FILL(IN NUM INT) RETURNS VARCHAR(1) AS $$
DECLARE
N INTEGER;
BEGIN
N:=NUM;
WHILE N > 0 LOOP
INSERT INTO PEOPLE(NAME,SEX,DOB,SURNAME)
SELECT NAME, SEX,
CURRENT_DATE - CAST(RANDOM()*365.25*100 AS INTEGER) AS DOB,
(SELECT SURNAME FROM SURNAMES ORDER BY RANDOM() LIMIT 1) AS SURNAME
FROM NAMES ORDER BY RANDOM() LIMIT 1;
N := N - 1;
END LOOP;
RETURN 'T';
END; $$
LANGUAGE PLPGSQL;
(Update)
Forgot to say it takes about seven seconds to insert ten thousands rows ... quite faster than MySQL.
| test=# SELECT NOW();SELECT FILL(10000);SELECT NOW(); |
| now |
| ——————————- |
| 2008-11-09 17:32:53.985751+01 (1 row) |
| fill |
| —— |
| T |
| (1 row) |
| now |
| ——————————- |
| 2008-11-09 17:32:59.359207+01 |
| (1 row) |
| test=# |
No comments:
Post a Comment