【发布时间】:2021-12-19 14:51:34
【问题描述】:
我在 生产 数据库中有数百万条记录(每 5 个表可能有 1000 万条记录),我想仅使用虚拟数据将它们复制到另一个数据库中,因为我无法真正导出此数据,因为它是 PROD 数据库并且有员工信息。
我现在主要是通过使用 LOOP 和这个查询来插入虚拟数据
DO $$
DECLARE
table1_id uuid;
table2_id uuid;
table3_id uuid;
BEGIN
FOR counter IN 1..500000 LOOP
INSERT INTO table1
VALUES ('random', 'data', 'here')
RETURNING id INTO table1_id;
INSERT INTO table2
VALUES ('random', 'data', 'here')
RETURNING id INTO table2_id;
INSERT INTO table3
VALUES ('random', 'data', 'here')
RETURNING id INTO table3_id;
INSERT INTO table4
VALUES (random', 'data', 'here');
INSERT INTO table5
VALUES ('random', 'data', 'here');
END LOOP;
END; $$
我知道插入单个记录和迭代非常慢,但我如何能够批量执行此操作?另外,还有比手动加载更好的方法吗?正如我之前所说,将 PROD 数据导出并在此处使用对我来说是不现实的。
我想这样做的原因是 我想用我的一个 API 查询这个新加载的数据库并测试每个查询的延迟时间,但我希望记录数类似于PROD 保持某种类型的受控环境,除非有人提出更好的方法。谢谢
【问题讨论】:
标签: database postgresql batch-processing loading batch-insert