- 论坛徽章:
- 0
|
主要脚本是这样的,我想用这个脚本制造大量的数据,可能上千万,部分字段枚举,例如PREPAID_FLAG,SUB_STATE。我想造的数据更实际些,所以使用了如下方法,但是替换产生的时候为什么只能产生少量的数据,这是为什么?
###config_b.sh
#!/usr/bin/ksh
#############1.t_o_crm_subscriber###########
aaaa=200002%07d
bbbbb=100002%07d
ccccc=100002%07d
##repaid_flag预付费标记(第8位)有的取1,有的取0####
PREPAID_FLAG_var[0]="0"
PREPAID_FLAG_var[1]="1"
dddd=6982%06d
ffff=14566258%07d
ffff=154985103154%07d
##关联t_o_crm_his_sub_state_change表的SUB_ID,取值B01、B06
SUB_STATE_var[0]="B01"
SUB_STATE_var[1]="B06"
kkkkk=%07d
hhhhh=10%07d
iiiiii=%07d
jjjj=%07d
###主脚本date_create.sh
#!/bin/bash
ECHO="echo"
if [ "`uname`" = "Linux" ] ;then
ECHO="echo -e"
fi
#Usage
usage()
{
UsageStr=""
UsageStr="$UsageStr""---------------------------------------------------\n"
UsageStr="$UsageStr""# Usage: $0 SubscriberNumber path\n"
UsageStr="$UsageStr""---------------------------------------------------\n"
$ECHO "$UsageStr"
exit 1
}
if [ ! $# -eq 2 ]; then
usage
else
RecordNum=$1
filepath=$2
fi
if [ ! -d ./$filepath ]; then
mkdir $filepath
fi
#初始化系统变量
. config_b.sh
####枚举字段取值#########具体的枚举数组值是多少,在另外一个文件中定义了
for((i = 0; i < "$RecordNum"; ++i))
{
PREPAID_FLAG=${PREPAID_FLAG_var[$((RANDOM%2))]}
echo $PREPAID_FLAG >> ./$filepath/PREPAID_FLAG.unl
}
for((i = 0; i < "$RecordNum"; ++i))
{
SUB_STATE=${SUB_STATE_var[$((RANDOM%2))]}
echo $SUB_STATE >> ./$filepath/SUB_STATE.unl
}
if [ "x$t_o_crm_subscriber" = "xy" ] ;then
$ECHO "\033[5mCreating t_o_crm_subscriber table data.......\033[m\t\t"`date`
FILENAME_OUT="B0001820120816_0_0001.AVL"
tmplrec="${aaaa}|${bbbb}|${cccc}|1|||21|0|${dddd}|${fffff}|${kkkkk}|nVqm2E1dwPl9NnBLCv2QfQ==|1||||1|20120808222701|20991231235959|0.0|0.0|B01|0000000000000000||20120808222701||20120808222701|20120808222701|20991231235959|20120809004914|20120808222701||${hhhh}|0001|${iiii}||${jjjjj}||1||||101"
awk 'BEGIN{
for (i = 0; i < '$RecordNum'; ++i)
{
printf "'"${tmplrec}"'\n",i,i,i,i,i,i,i,i,i,i,i
}
}' /dev/null > ./$filepath/subscriber1.unl
awk 'BEGIN{FS=OFS="|"}{getline a < "./'$filepath'/PREPAID_FLAG.unl";$8=a;print $0 > "./'$filepath'/'$FILENAME_OUT"}'./$filepath/$FILENAME_OUT
awk 'BEGIN{FS=OFS="|"}{getline a < "./'$filepath'/SUB_STATE.unl";$22=a;print $0 > "./'$filepath'/'$FILENAME_OUT'"}' ./$filepath/$FILENAME_OUT
fi
//回复 32# yestreenstars
|
|