一个数据库增加大量的随机的数据 (shell 脚本)

这段时间在搞大数方面的研究,大量的数据哪里去找呢呵呵,网上的一些自动生成工具也 不怎么符合自己需求,于是乎自己就编写了一个,能产生大量的随机数据的脚本,还能对配置文件进行配置哦,虽然有些地方做不够灵活,但基本需求也OK啦

下面把源代码贴出来分享一下哈

有两个文件

config.h

HOSTNAME='10.33.28.231'
PORT='3306'
USERNAME="drmtest"
PASSWD="test"

DBNAME="test"
TABLENAME="testdb"  #this value has two place used

TABLE_ATTR=(int varchar varchar); # the type of column for TABLENAME ;

#mysql_sql="select *from ${TABLENAME}"
mysql_sql="${1}" ;

mysql -h${HOSTNAME} -p${PORT} -u${USERNAME} -p${PASSWD} ${DBNAME} -e "${mysql_sql}" ;

inservalue.sh

视频: 超感人年度神剪:《野青春》 http://v.youku.com/v_show/id_XNDkxODA0MTE2.html
视频: 我们必须找到除了爱情之外,能够让我们用双脚,坚强站立的东西。http://v.youku.com/v_show/id_XNDA2ODE4NTgw.html


RECORD_NUM=100
CHAR_MAX_LEN=20
TABLE_ATTR=(int varchar varchar)
CLO_NUM=3
CUR_ATTR=0
TABLENAME="testdb"


function search(){
        local var;
        var=${!#}
        local i;
        for i in $*
        do
                if [ $var = $i ] ;then
                        return 3
                fi
        done
}

awk '
BEGIN{
        record_num=int("'$RECORD_NUM'") ;
        max_len = int("'$CHAR_MAX_LEN'");
        
        print "awk begin" ;
        srand();
        info="a b c d e f g h i j k l m n o p q r s t u v w x y z";
        split(info,arr,FS);
                        
        
#       for(i=0;i<26;i++)
#               printf("i=%d,%s ",i,arr[i]);
                
        for(i=0;i<record_num;i++){
                
                printf("%d ",1024*rand())>"'$1'";
                w = max_len*rand();
                w = int(w)+1;
                str="";
                for(j=0;j<w;j++ ){
                        k=100*rand()%26 ;
                        k = int(k);
                        str=str""arr[k+1];
                }
                printf("%s ", str)>"'$1'" ;     
                
                w = 10*rand();
                w = int(w)+1;
                str="";
                for(j=0;j<w;j++ ){
                        k=100*rand()%26 ;
                        k = int(k);
                        str=str""arr[k+1];
                }
                printf("%s ", str)>"'$1'" ;     

        
                print "">"'$1'"

        }
}
{       
        print "in awk";

}
END{ print "awk end" }  

' $1


awk '
BEGIN{
        #sql = "sh config "
        #system(var);
}
{
        sql = "sh config "
        sql_value="(" ;
        for(i=1;i<=3;i++){
                if($i == int($i))
                        sql_value=sql_value""$i;
                else{
                        sql_value=sql_value""",""""'\''"
                        sql_value=sql_value""$i
                        sql_value=sql_value"""'\''"
                }
                        
        }
        sql_value=sql_value""")" ;
        print sql_value ;
                

        real_sql =" \"insert into """"'${TABLENAME}' (id,name,passwd) values "
        real_sql = real_sql""sql_value"""\"" ;
        
        print real_sql ;        
        sql = sql""real_sql ;
        system(sql);
}
END{ }
' $1


在终端上运行如下:
$ sh inservalue.sh tmp






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值