MySQL用隨機資料填充表
先建立數字輔助表
http://blog.itpub.net/29254281/viewspace-1362897/
然後建立一個生成隨機字元的函式
然後執行如下命令
其中
@table_schema是資料庫名
@table_name是目標表名
@row_count是生成的行數
這個不支援boolean型別,因為mysql在內部作為tinyint儲存.
也有一些業務要求,比如State只有0,1兩個取值.
可以在生成資料之後,再批次修改一下。
update test set c2=round(rand());
-
create table nums(id int not null primary key);
-
-
delimiter $$
-
create procedure pCreateNums(cnt int)
-
begin
-
declare s int default 1;
-
truncate table nums;
-
while s<=cnt do
-
insert into nums select s;
-
set s=s+1;
-
end while;
-
end $$
-
delimiter ;
-
-
delimiter $$
-
create procedure pFastCreateNums(cnt int)
-
begin
-
declare s int default 1;
-
truncate table nums;
-
insert into nums select s;
-
while s*2<=cnt do
-
insert into nums select id+s from nums;
-
set s=s*2;
-
end while;
-
end $$
- delimiter ;
http://blog.itpub.net/29254281/viewspace-1362897/
然後建立一個生成隨機字元的函式
-
DROP FUNCTION IF EXISTS rand_string;
-
delimiter //
-
CREATE FUNCTION rand_string(l_num int UNSIGNED,l_type tinyint UNSIGNED)
-
RETURNS varchar(2000)
-
BEGIN
-
-- Function : rand_string
-
-- Author : dbachina#dbachina.com
-
-- Date : 2010/5/30
-
-- l_num : The length of random string
-
-- l_type: The string type
-
-- 1.0-9
-
-- 2.a-z
-
-- 3.A-Z
-
-- 4.a-zA-Z
-
-- 5.0-9a-zA-Z
-
--
:
-
-- mysql> select rand_string(12,5) random_string;
-
-- +---------------+
-
-- | random_string |
-
-- +---------------+
-
-- | 3KzGJCUJUplw |
-
-- +---------------+
-
-- 1 row in set (0.00 sec)
-
DECLARE i int UNSIGNED DEFAULT 0;
-
DECLARE v_chars varchar(64) DEFAULT '0123456789';
-
DECLARE result varchar (2000) DEFAULT '';
-
-
IF l_type = 1 THEN
-
SET v_chars = '0123456789';
-
ELSEIF l_type = 2 THEN
-
SET v_chars = 'abcdefghijklmnopqrstuvwxyz';
-
ELSEIF l_type = 3 THEN
-
SET v_chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
ELSEIF l_type = 4 THEN
-
SET v_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
ELSEIF l_type = 5 THEN
-
SET v_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
-
ELSE
-
SET v_chars = '0123456789';
-
END IF;
-
-
WHILE i < l_num DO
-
SET result = concat( result,substr(v_chars,ceil(rand()*(length(v_chars)-1)),1) );
-
SET i = i + 1;
-
END WHILE;
-
RETURN result;
-
END;
-
//
- delimiter ;
-
set @table_schema='songod';
-
set @table_name='test';
-
set @row_count=10;
-
set @sql=concat('insert into ',@table_schema,'.',@table_name,' select ');
-
select
-
nullif ('please stand by...',
-
@sql:=concat(@sql,
-
case
-
when data_type='int' then 'round(rand()*2147483647),'
-
when data_type='bigint' then 'round(rand()*9223372036854775807),'
-
when data_type='smallint' then 'round(rand()*32767),'
-
when data_type='tinyint' then 'round(rand()*127 ),'
-
when data_type='varchar' then concat('rand_string(',CHARACTER_MAXIMUM_LENGTH,',5),')
-
when data_type='date' then 'now()-interval round(90*rand()) day,'
-
when data_type='datetime' then 'now()-interval round(90*rand()) day,'
-
when data_type='timestamp' then 'now()-interval round(90*rand()) day,'
-
end
-
)
-
) info
-
from information_schema.columns where table_schema=@table_schema and table_name=@table_name;
-
set @sql=left(@sql,char_length(@sql)-1);
-
select nullif ('please stand by...',@sql:=concat(@sql,' from nums where id<=',@row_count,';')) info;
-
prepare statement from @sql;
-
execute statement;
- commit;
@table_schema是資料庫名
@table_name是目標表名
@row_count是生成的行數
這個不支援boolean型別,因為mysql在內部作為tinyint儲存.
也有一些業務要求,比如State只有0,1兩個取值.
可以在生成資料之後,再批次修改一下。
update test set c2=round(rand());
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1710655/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 用隨機資料填充外來鍵表MySql隨機
- Oracle用隨機資料填充表Oracle隨機
- 如何實現MySQL隨機查詢資料與MySQL隨機更新資料?MySql隨機
- 表中隨機取資料隨機
- MySQL 隨機查詢資料與隨機更新資料實現程式碼MySql隨機
- 如何隨機生成一個大表的資料隨機
- php實現mysql資料庫隨機重排例子PHPMySql資料庫隨機
- MySQL隨機選取資源MySql隨機
- 工作隨筆——mysql子查詢刪除原表資料MySql
- Faker資料填充
- Laravel - 資料填充Laravel
- 應用:資料預處理-缺失值填充
- oracle插入隨機資料Oracle隨機
- MySQL隨機選取資源--優化MySql隨機優化
- 使用SQL語句從資料庫一個表中隨機獲取資料SQL資料庫隨機
- 【資料庫】MySQL鎖機制、熱備、分表資料庫MySql
- MySQL 資料表操作MySql
- mysql生成隨機數MySql隨機
- MySQL 千萬級資料表 partition 實戰應用MySql
- MYSQL造資料佔用臨時表空間MySql
- 配置化資料填充框架框架
- excel模板資料填充 :tablefillExcel
- mysql迴圈插入資料、生成隨機數及CONCAT函式MySql隨機函式
- python 隨機生成字串資料Python隨機字串
- MySQL刪除資料表MySql
- MySQL複製資料表MySql
- 隨機取表記錄隨機
- MySQL 資料庫技巧:批次更新隨機生成的時間戳欄位MySql資料庫隨機時間戳
- 用Python寫一個向資料庫填充資料的小工具Python資料庫
- 從oracle表中隨機取記錄,產生隨機數和隨機字串Oracle隨機字串
- SQL語句select隨機調取10行資料 Access/SQL Server/Mysql等資料庫隨機ServerMySql資料庫
- faker 資料填充常用指令收集
- Laravel 優雅填充 SQL 資料LaravelSQL
- Laravel模型工廠填充資料Laravel模型
- Mysql匯出表結構、表資料MySql
- SAP CRM訂單資料庫表CRMD_SHIPPING的填充原理資料庫
- (轉)Oracle的隨機數、隨機日期和時間、隨機字串及造資料匿名過程Oracle隨機字串
- Laravel 中資料遷移和資料填充Laravel