1. 程式人生 > >創建海量表

創建海量表

min i+1 gpo mysql配置 var abcdefg string 插入數據 sta

create table emp(

empno mediumint unsigned not null default 0,

name varchar(20) not null default ‘‘,

)engine = MyISAM default charset = utf8;

#隨機產生字符串

#定義一個新的命令結束符,防止創建存儲過程中沖突

delimiter $$

#刪除自定函數

drop function rand_string $$

#創建函數 rand_string(n INT) #(n INT)該函數接收一個整數

creat function rand_string(n INT)

returns varchar(255) #隨機返回指定n長度的一個字符串

begin

#定義一個變量 chars_str varchar (100) 默認值為 ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘

declare chars_str varchar(100) default ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789‘;

declare return_str varchar(255) default ‘‘;

declare i int default 0;

while i < n do

  set return_str = concat(return_str, substring(chars_str, floor(1+rand()*62),1));

  set i = i + 1;

  end while;

  return return_str;

  end $$

#隨機添加max_num條,編號從start開始

#創建存儲過程

create procedure insert_values(in start int(10), in max_num int(10))

begin

declare i int default 0;

#set autocommit = 0 關閉自動提交

set autocommit = 0;

repeat

set i = i+1;

#插入數據表

insert into emp values ((start+i), rand_string(6), rand_num());

until i = max_num

end repeat;

#手動提交

commit;

end $$

#調用存儲

call insert_values(0, 8000000)$$

如果執行Mysql出現錯誤號為1418時,可以設置log_bin_trust_routine_creators=1,有3種方法

1、在客戶端執行 SET GLOBAL log_bin_trust_routine_creators=1;

2、在mysql配置文件my.ini或my.cnf中[mysql]段上添加log-bin-trust-routine-creators=1

3、mysql啟動時 加上--log-bin-trust-routine-creators=1

創建海量表