Как я могу вставить сразу много случайных данных в таблицу 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)]
);