如何创建一系列值,然后使用它们将数据插入postgresql数据库

时间:2016-12-23 16:23:47

标签: postgresql

背景资料:

我需要在表格中自动生成一堆记录。我拥有的唯一信息是起始范围和结束范围。 假设我的表看起来像这样:

     id 
     widgetnumber

逻辑需要包含在.sql文件中 我正在运行postgresql

代码

这就是我到目前为止......作为一项测试...它似乎正在起作用:

DO $$
DECLARE widgetnum text;
BEGIN
    SELECT 5 INTO widgetnum;

    INSERT INTO widgets VALUES(DEFAULT, widgetnum);
END $$;

然后运行它,我从数据库服务器上的命令行执行此操作:

testbox:/tmp# psql -U myuser -d widgets -f addwidgets.sql 
DO

问题

  1. 如何修改此代码以循环显示一系列小部件编号并将其全部插入? 例如,我将获得一个起始范围和一个结束范围(100到150,比如说)

  2. 你能指点我一个好的在线资源来学习我应该使用的语法吗?

  3. 感谢。

2 个答案:

答案 0 :(得分:4)

  

如何修改此代码以循环显示一系列小部件编号并将其全部插入?

您可以使用generate_series()

insert into widgets (widgetnumber)
select i
from generate_series(100, 150) as t(i);
  

你能指点我一个好的在线资源来学习我应该使用的语法吗?

https://www.postgresql.org/docs/current/static/index.html

答案 1 :(得分:0)

dvdrental=# \d test
                       Table "public.test"
 Column |          Type          | Collation | Nullable | Default
--------+------------------------+-----------+----------+---------
 id     | integer                |           |          |
 name   | character varying(250) |           |          |

dvdrental=# begin;
BEGIN
dvdrental=# insert into test(id,name) select generate_series(1,100000),'Kishore';
INSERT 0 100000