数据库批量提交sql语句

说明

load文件、存储过程…
下文使用代码随机生成各种测试数据,然后通过jdbc、odbc插入数据库
测试出单次提交合适的数据量,然后多连接并发

jdbc中直接preparestatement,然后batch提交;

mysql

//预先清理环境
drop table if exists table_name;
//创建测试表
create table table_name(
//......
)
//插入测试数据
insert into table_name values (
//.....
),
//...,
(
//...
);

oracle

预先删除表

declare
      num number;
begin
    select count(1) into num from user_tables where table_name = upper('xxxxx') ;
    if num > 0 then
        execute immediate 'drop table xxxxx' ;
    end if;
end;
//或者
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE this_table';
EXCEPTION
  WHEN OTHERS THEN
    NULL;
END;

创建表

create table table_name(
//...
);

程序代码中最后的;无需携带,否则报错:missing option

插入数据

insert into values方式

BEGIN
      insert (...) into (...);
      //....
      insert (...) into (...);
END;

insert into select 方式

BEGIN
     insert into table_name select 'v1',...,'vn' from dual 
     union all select 'v1',...,'vn' from dual
     union all select 'v1',...,'vn' from dual;
END;

insert all方式

BEGIN
    insert all
    into table_name(xxxx)values(xxxx)
    //...
    into table_name(xxxx)values(xxxx)
    select 1 from dual;
END;

适合于Oralce 9i以上版本

insert into select from 方式

insert into table_name 
select c1,...,cn from t_inst_test_his where cx=xxx;

mssql

#在2016版本及更高版本,建表前判断表是否存在
DROP TABLE IF EXISTS myschema.mytable;
#低版本中
IF OBJECT_ID(N'myschema.mytable', N'U') IS NOT NULL DROP TABLE myschema.mytable;

create table myschema.table_name(
//......
)

insert into table_name values (
//.....
),
//...,
(
//...
);

The number of row value expressions in the INSERT statement exceeds the maximum allowed number of 1000 row values.

pgsql

DROP TABLE IF EXISTS table_name;

CREATE TABLE table_name (
 //...
);

insert into table_name values (
//.....
),
//...,
(
//...
);

可以使用COPY FROM读取文件插入

db2

//手动确定是否需要删除表,或
select COUNT(*) from SYSCAT.TABLES where TRIM(TABNAME) = 'table_name';
//上述查询表存在大小写存在则删除
DROP TABLE table_schema.table_name;

CREATE TABLE table_schema.table_name (
 //...
);

insert into table_schema.table_name values (
//.....
),
//...,
(
//...
);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值