Как я могу вставить сразу много случайных данных в таблицу postgreSQL?

Есть задание - Добавить в таблицу 500 уникальных записей Выдумывать из головы не дело

СНИЗУ ПСЕВДОКОД Возможно ли перевести его в SQL запрос? Могу ли я оперировать полями attrname, ... в sql?

attrname = 0
attrname2 = 0
counter = 0

WHILE counter <> 500
    counter += 1;
    attrname += 1;
    attrname2 += 1;
    INSERT INTO tablename(fieldname1, fieldname2) VALUES (attrname, attrname2);
END LOOP


Где я могу прочитать про методы TO_CHAR, TO_INT, TO_BOOL и т.п. Посоветуйте книгу postgreSQL диалекта


Ответы (2 шт):

Автор решения: Ainar-G

Как-то так:

INSERT INTO tablename (fieldname1, fieldname2)
SELECT n, n FROM (
  SELECT generate_series(1, 500) AS n
) AS newvalues
;
→ Ссылка
Автор решения: skyho
CREATE TABLE "user"
(
    id         BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
    first_name VARCHAR(255),
    last_name  VARCHAR(255),
    email      VARCHAR(255),
    password   VARCHAR(60),
    role       VARCHAR(255),
    enabled    BOOLEAN                                 NOT NULL DEFAULT FALSE,
    CONSTRAINT pk_user PRIMARY KEY (id)
);
INSERT INTO "user" (id,
                    first_name,
                    last_name,
                    email,
                    password,
                    role,
                    enabled)
VALUES (generate_series(1, 50),
       substr(gen_random_uuid()::text, 1, 10),
        substr(gen_random_uuid()::text, 1, 10),
        /*генерирует email*/
        substr(gen_random_uuid()::text, 2, 5 )
            || '@' ||
        substr(gen_random_uuid()::text, 2, 5)
            || '.com',
        substr(gen_random_uuid()::text, 1, 10),
        /*каждый раз рандомно выбирает из предоставленного списка
          случайное значение*/
        (array['ADMIN', 'MANAGER', 'USER'])[floor(random() * 3 + 1)],
        (array[true, false])[floor(random() * 2 + 1)]
       );
→ Ссылка