当前位置:   article > 正文

接口开发:Orcal数据库的批量新增sql

接口开发:Orcal数据库的批量新增sql

场景:在日常的CURD中一定会用到批量新增。在我们的项目中,使用的数据库是Orcal,由于之前基本都是使用Mysql的,使用的sql语句也基本都是用mysql的。但是在这次的接口编写时用mysql的批量新增出了问题,刚开始我还以为是写的动态sql有问题,在后续的问题修改也主要是对动态sql修改,因此也浪费了大量的时间,在后续把sql搬到数据库运行一下后才发现是sql的问题,同时也了解到了mysql和orcal 也是有很多地方是不同的。

MySQL和Oracle在批量新增数据时存在一些不同点,主要体现在语法、性能、事务处理等方面。以下是一些关键区别:

1. 语法

MySQL

在MySQL中,可以使用INSERT INTO ... VALUES语句一次插入多行数据。示例如下:

  1. INSERT INTO table_name (column1, column2, column3)
  2. VALUES
  3. (value1, value2, value3),
  4. (value4, value5, value6),
  5. (value7, value8, value9);

Oracle

在Oracle中,批量插入通常使用INSERT ALL语句或使用多行的INSERT INTO ... SELECT语句。示例如下:

  1. INSERT ALL
  2. INTO table_name (column1, column2, column3) VALUES (value1, value2, value3)
  3. INTO table_name (column1, column2, column3) VALUES (value4, value5, value6)
  4. INTO table_name (column1, column2, column3) VALUES (value7, value8, value9)
  5. SELECT * FROM dual;

或者使用INSERT INTO ... SELECT语句:

  1. INSERT INTO table_name (column1, column2, column3)
  2. SELECT value1, value2, value3 FROM dual
  3. UNION ALL
  4. SELECT value4, value5, value6 FROM dual
  5. UNION ALL
  6. SELECT value7, value8, value9 FROM dual;

2. 性能

  • MySQL:批量插入多行数据时,MySQL的性能通常比逐行插入要高,因为它减少了客户端与服务器之间的通信次数。
  • Oracle:Oracle的批量插入性能也很高,尤其是在使用INSERT ALL语句时,因为它可以在一次操作中插入多行数据。

3. 事务处理

  • MySQL:MySQL支持事务处理,批量插入的数据可以在一个事务中提交,确保数据的一致性。
  • Oracle:Oracle也支持事务处理,并且提供了更强大的事务管理功能,允许更复杂的事务控制。

4. 特定功能

  • MySQL:MySQL提供了LOAD DATA INFILE命令,用于从文件中快速批量插入数据,这是一个非常高效的方法。
  • Oracle:Oracle提供了SQL*Loader和外部表(External Table)功能,用于从外部文件批量加载数据。这些工具在处理大规模数据插入时非常有用。

最后附上当时编写的sql代码和动态sql:

  1. INSERT ALL
  2. INTO PROD CONFIG GROUP(SERIAL NO,CONFIG GROUP ID,PRODUCT ID)
  3. VALUES (12312',NULL,NULL)
  4. INTO PROD CONFIG GROUP(SERIAL NO,CONFIG GROUP ID,PRODUCT ID)
  5. VALUES ('1234',NULL,NULL)
  6. SELECT I FROM DUAL ;

动态sql:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/871210
推荐阅读
相关标签
  

闽ICP备14008679号