如何使用一个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/

10-09 00:53
查看更多