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

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

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

1. 语法

MySQL

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

INSERT INTO table_name (column1, column2, column3)
VALUES
    (value1, value2, value3),
    (value4, value5, value6),
    (value7, value8, value9);

Oracle

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

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

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

INSERT INTO table_name (column1, column2, column3)
SELECT value1, value2, value3 FROM dual
UNION ALL
SELECT value4, value5, value6 FROM dual
UNION ALL
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:

INSERT ALL
INTO PROD CONFIG GROUP(SERIAL NO,CONFIG GROUP ID,PRODUCT ID)
VALUES (12312',NULL,NULL)
INTO PROD CONFIG GROUP(SERIAL NO,CONFIG GROUP ID,PRODUCT ID)
VALUES ('1234',NULL,NULL)
SELECT I FROM DUAL ;

动态sql:

相关推荐

  1. mybatis批量新增数据

    2024-07-18 06:08:01       35 阅读
  2. oracle开发中常用sql语句

    2024-07-18 06:08:01       34 阅读
  3. MybatisPlus大量数据批量新增优化

    2024-07-18 06:08:01       46 阅读
  4. springboot实现同时批量新增批量修改数据

    2024-07-18 06:08:01       34 阅读
  5. Oracle数据库批量变更字段类型

    2024-07-18 06:08:01       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 06:08:01       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 06:08:01       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 06:08:01       62 阅读
  4. Python语言-面向对象

    2024-07-18 06:08:01       72 阅读

热门阅读

  1. Python 文件读写

    2024-07-18 06:08:01       22 阅读
  2. PHP + Swoole 与 Go 技术选型对比调研报告

    2024-07-18 06:08:01       18 阅读
  3. Spring Boot 注解 @PostConstruct 介绍

    2024-07-18 06:08:01       24 阅读
  4. 从零手写实现 nginx-31-load balance 负载均衡介绍

    2024-07-18 06:08:01       26 阅读
  5. Elasticsearch数据迁移

    2024-07-18 06:08:01       18 阅读
  6. 构建管理大师:如何在Gradle中配置源代码目录

    2024-07-18 06:08:01       21 阅读
  7. 深入解析:如何在Gradle中配置签名插件

    2024-07-18 06:08:01       23 阅读
  8. LeetCode 算法:括号生成 c++

    2024-07-18 06:08:01       22 阅读
  9. Apache Omid TSO 组件源码实现原理

    2024-07-18 06:08:01       22 阅读
  10. php 方法追踪其被调用的踪迹

    2024-07-18 06:08:01       20 阅读