背景资料:
我需要在表格中自动生成一堆记录。我拥有的唯一信息是起始范围和结束范围。 假设我的表看起来像这样:
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
问题
如何修改此代码以循环显示一系列小部件编号并将其全部插入? 例如,我将获得一个起始范围和一个结束范围(100到150,比如说)
你能指点我一个好的在线资源来学习我应该使用的语法吗?
感谢。
答案 0 :(得分:4)
如何修改此代码以循环显示一系列小部件编号并将其全部插入?
您可以使用generate_series()。
insert into widgets (widgetnumber)
select i
from generate_series(100, 150) as t(i);
你能指点我一个好的在线资源来学习我应该使用的语法吗?
答案 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