如何插入多个insert sql语句

时间:2019-01-24 06:53:05

标签: sql oracle

有一个表Person(id,name)。我要在个人表中插入1000多个记录。 ID和名称都应该唯一。我写了这样的东西

INSERT ALL 
       INTO PERSON (1, 'MAYUR')
       INTO PERSON (2, 'SALUNKE') 
       .....(1000 records)
SELECT * FROM DUAL;    

在此查询中,我得到了名称的唯一约束。我怎么知道哪条记录特别失败。我在日志中看到的就是这个

  

从第3行开始的错误-ORA-00001:唯一约束   (UN_PERSON_NAME)违反了。

这不会告诉您确切的记录是重复的。

3 个答案:

答案 0 :(得分:2)

您缺少values关键字。试试吧!

INSERT ALL 
       INTO PERSON values(1, 'MAYUR')
       INTO PERSON values(2, 'SALUNKE') 
       .....(1000 records)
SELECT * FROM DUAL;    

答案 1 :(得分:-1)

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1

答案 2 :(得分:-1)

不幸的是,Oracle不支持使用单个VALUES()语句进行多次插入。我通常这样处理:

INSERT PERSON (id, name)
    SELECT 1, 'MAYUR' FROM DUAL UNION ALL
    SELECT 2, 'SALUNKE' FROM DUAL UNION ALL 
       .....;

此方法的一个优势是您可以使用子查询并分配ID:

INSERT PERSON (id, name)
    SELECT rownum, x.name
    FROM (SELECT 'MAYUR' FROM DUAL UNION ALL
          SELECT 'SALUNKE' FROM DUAL UNION ALL 
          .....
         ) x