PostgreSQL批量向表中插入数据
在 PostgreSQL 中,可以使用 PL/pgSQL 脚本通过 BEGIN … FOR … LOOP 语句来批量插入数据。这个方法非常适合需要编写过程逻辑来批量插入数据的场景。在这个例子中,我将演示如何使用一个循环从 1 到 10000,向表中插入数据。
DO $$
DECLARE aa INTEGER;
-- 开始一个事务
BEGIN-- 循环从 1 到 10000FOR aa IN 1..10000 LOOP-- 这里可以放入你想要进行的操作,例如插入、更新操作等-- 此示例将在每次循环中插入一行数据到表 yewu1.t1 中INSERT INTO yewu1.t1 VALUES (aa,'white ' || aa);
END LOOP;
COMMIT;
END $$;
解释
DO $$ … $$: 这是 PL/pgSQL 中的匿名块,允许一次执行一段 PL/pgSQL 代码而无需创建函数。
DECLARE: 声明当前匿名块中使用的变量。在本例中,声明了一个整数变量 INTEGER。
BEGIN … END: 定义 PL/pgSQL 代码块的主体。
FOR num IN 1…10000 LOOP … END LOOP: 循环从 1 到 10000,每次增加变量 num。
INSERT INTO yewu1.t1 VALUES (aa,'white ’ || aa);: 每次循环执行一次插入操作。
white=# DO $$
white$# DECLARE aa INTEGER;
white$# BEGIN
white$# FOR aa IN 1..10000 LOOP
white$# INSERT INTO yewu1.t1 VALUES (aa,'white ' || aa);
white$# END LOOP;
white$# COMMIT;
white$# END $$;
DO
white=#
white=# select count(*) from yewu1.t1;count
-------10000
(1 row)
使用 PL/pgSQL 的 BEGIN … FOR … LOOP 语句可以方便地进行批量插入操作。这个方法适合在需要插入大量数据且可以通过循环生成数据的场景下使用。PL/pgSQL 提供了灵活和强大的语言特性,适用于复杂的数据库逻辑和批处理操作。