如何使用一个SQL查询将测试数据创建到PostgreSQL表中?例如,我想在这个表中插入几行数据:
CREATE TABLE RELEASE_PLANNING(
ID INTEGER NOT NULL,
NAME TEXT,
PLANNING_START_DATE DATE,
PLANNING_END_DATE DATE,
DESCRIPTION TEXT,
LAST_UPDATE DATE,
CREATED DATE
)
;
我测试了这个代码
PreparedStatement ps = null;
boolean committed = false;
try
{
conn.setAutoCommit(false);
for (int i = 0; i < 20; i++)
{
int randomNum = 10 + (int) (Math.random() * 20000);
ps = conn.prepareStatement("INSERT INTO KNOWLEDGEBASE (ID, NAME) VALUES (?, generate_series(1,1000), md5(random()::text))");
ps.setInt(1, randomNum);
// ps.setString(2, "Test_file");
ps.executeUpdate();
}
ps.close();
conn.commit();
committed = true;
}
我错了
org.postgresql.util.PSQLException:错误:INSERT的表达式多于目标列
职位:7
最佳答案
错误消息正确地告诉您,您正试图将三列数据(?, generate_series(1,1000), md5(random()::text))
)插入两列(INSERT INTO KNOWLEDGEBASE (ID, NAME)
)。不清楚这与create table
语句有什么关系,该语句创建了一个具有七列的不同名称的表。
这种查询将插入100行。
insert into release_planning
select n, 'a', current_date, current_date, 'a', current_date, current_date
from generate_series (1, 100) n;
如果需要随机数据,最好的方法可能是编写一些函数,并在该语句的
select
子句中使用它们。所以,我可以写随机整数(低、高),
随机日期(低、高)
随机字符串(长度),
这样称呼他们。
insert into release_planning
select n,
random_string(35),
current_date,
random_date(current_date, date '2016-12-31'),
random_string(20),
random_date(date (current_date + interval '3 days'), date '2016-12-31'),
current_date
from generate_series (1, 100) n;
关于sql - PostgreSQL表的测试数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36470179/