celleychen 发表于 2009-05-23 23:40

测试中如何给DB2生成大量数据

请问有谁知道如何在DB2中自动生成大量数据?
我自己想到的方法是,因为我是在linux环境下,可以编写脚本,使用SQL语句,但是有点复杂,而且我希望生成5GB大小。
另外一种方法使用tool,如DB2 Test Database Generator或者EMS Data Generator for db2,但是第一个工具觉得有点复杂,需要一个source和target,第二个工具好像只能在windows下面使用。


希望各位大侠给点建议。谢谢!

wolfop 发表于 2009-05-24 11:25

自己用perl些个小脚本,生成DEL文件然后LOAD起步最方便。

celleychen 发表于 2009-05-24 23:01

能否给一个脚本或者sample?

Germin 发表于 2009-05-25 08:43

基本的用递归查询可以实现。

大梦 发表于 2009-05-25 14:15

随便写点代码就行啦!
直接用sql或存储过程也行!用db2的递归吧!

smithy 发表于 2009-05-29 09:11

写一个过程吧,很容易的!我给你一个以前我写的例子(主体部分),你可以按照这种方式改写一个:
CREATE PROCEDURE load_data (IN p_size INT,
                            IN p_dsize INT,
                            IN p_date   VARCHAR(20),
                            IN p_optdateCHAR(8)
)
LANGUAGE SQL
BEGIN
   DECLARE pk2 CHAR(20);
   DECLARE i int;
   DECLARE j int;
   DECLARE p_id int;
   SET i = 0 ;
   SET j = 0 ;   
   WHILE i < p_size DO
       SET pk2 = CONCAT('A',CHAR(i));
       INSERT INTO test_ordermaster_his
                     (djbm,
                      operatedate, status, customerid, departid,
                      salerid, paymode, sumrequantity, sumquantity,
                      sumamountincludetax, sumassessprofit,
                      sumretailamounttax, isordersucceed, ispaysucceed,
                      indate,updatedate
                     )
            VALUES (pk2,
                      p_optdate, 1, 1001, 1001,
                      1001, 1001, 1000, 200,
                      400, 300,
                      100, '1', '2',
                      DATE(p_date),current date
                     );               
      WHILE j < p_dsize DO
      set p_id = FLOOR(RAND()*100) ;
      INSERT INTO test_orderdetail_his
                        (djbm,
                         productid, reqquantity, quantity, amount,
                         assessprofit, retailamounttax, price, producttype,
                         indate
                        )
               VALUES (pk2,
                         p_id, 100, 100, 200,
                         100, 200, 100, 200,
                         DATE(p_date)
                        );
       SET j = j + 1 ;   
   END WHILE;
   SET j = 0 ;
   SET i = i + 1 ;
END WHILE;      
commit;
END @
页: [1]
查看完整版本: 测试中如何给DB2生成大量数据