利用資料庫的儲存過程批量建表和批量插入資料

2021-08-13 19:51:24 字數 2936 閱讀 3855

**********====mysql********************

/* 

利用mysql儲存過程批量建立mysql的表:

test_1

test_2

test_...

*/-- 如果儲存過程已存在,先刪除

drop procedure if exists `create_tables`;

-- 建立儲存過程

delimiter $$

create procedure `createtables`()

begin

declare `@i` int(11);

declare `@createsql` varchar(2560);

declare `@createindexsql1` varchar(2560);

declare `@createindexsql2` varchar(2560);

declare `@createindexsql3` varchar(2560);

set `@i`=1;

while `@i`<=4 do

-- `m_id` bigint auto_increment primary key not null,

-- createtable

set @createsql = concat('create table if not exists test_',`@i`,'(

id int(11) not null comment \'使用者id\',

name varchar(255) comment \'使用者名稱\',

info varchar(255) comment \'資訊\',

cnt int(11) default 0 comment \'計數\',

primary key (id)

) engine=innodb default charset=utf8 collate=utf8_bin');

prepare stmt from @createsql;

execute stmt;

set `@i`= `@i`+1;

end while;

end$$

delimiter;

-- 呼叫儲存過程建立表

call createtables();

/* mysql批量插入資料,舉例 */

-- 如果儲存過程已存在,先刪除

drop procedure test;

delimiter $$

create procedure `test`()

begin

declare i int default 1;

while (i <= 10) do

insert into `testdb`.`table01`(`id`,`name`) values (i,'testaaaa');

set i = i + 1;

end while;

end$$

delimiter ;

-- 呼叫儲存過程

call test();

/* mysql批量插入資料,舉例 */

-- 如果儲存過程已存在,先刪除

drop procedure test;

delimiter $$

create procedure test()

begin

declare i int default 1;

while (i<=10) do

insert into test03.test_2(id,name,info) values(i,'aaa','bbb');

set i=i+1;

end while;

commit;

end $$

delimiter;

-- 呼叫儲存過程

call test();

**********====oracle********************=

oracle批量插入資料

# sys使用者登入,grant execute on dbms_***x to *** 來賦下許可權才可以

# grant execute on dbms_output to user01

# grant execute on dbms_lock to user01

//舉例1

begin

for i in 1 .. 2000

loop 

insert into "user01"."table01" ("rynbid", "col02", "col03", "col04") values (i, 'aaa', 'bbb', 'ccc');

end loop;

commit;

end;

///舉例2

begin

for i in 1 .. 2000

loop 

insert into "user01"."table01" ("rynbid", "col02", "col03", "col04") values (i, 'aaa', 'bbb', 'ccc');

if mod(i,50) = 0 then

commit;

dbms_output.put_line('to commit, i = '||i||''); 

dbms_lock.sleep(1);

end if;

end loop;

commit;

end;

/#oracle中批量刪除多表

select 'drop table '  || table_name || ';' from user_tab_comments where  table_name like '%testjob%';

MYSQL批量建表儲存過程

分表比較多的情況,如何批量建立,可通過儲存過程實現 建立乙個儲存過程 紅色表結構,藍色為表名及表數量 delimiter create procedure sp create tab begin set str id int 11 not null auto increment comment 自增...

mysql儲存過程批量建表

asif 用mysql的儲存過程建立100張表 mysql delimiter create procedure createtables begin declareiint declaretable namevarchar 20 declaretable prevarchar 20 declare...

星環TDH資料庫批量生成表和儲存過程

環境準備 安裝python環境 解壓 然後設定環境變數。把etl資料夾放到本地 sheet名為 載入策略 是對各個演算法模板的說明,其中etl策略,是對演算法模板的命名,例如 sheet名為 表級 是需要對所建的表進行相應的表級維護,包括 系統 資料庫型別,目標層次,依賴層次,依賴表名,載入策略,目...