テーブルをロードするには、テキストファイルに数十億のレコードを作成する必要があります。
私のターゲットテーブル定義は次のとおりです。
CREATE TABLE txnrecords12(
txnno int,
txndate string,
custno int,
amount double,
category string,
product string,
city string,
state string,
spendby string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
データを生成するための私のコードは次のとおりです。
############!/bin/sh
####### Create file dynamically
if [ ! -d hero_work ]
then
mkdir hero_work
fi
TEMPDIR=$HOME/hero_work
cd $TEMPDIR
touch $TEMPDIR/big_data_file_$$
echo $"string1\n",printf "string1\n",printf "string1\n">>big_data_file_$$
####################################
### Create data file dynamically####
####################################
if [ ! -d hero_work ]
then
mkdir hero_work
fi
TEMPDIR=$HOME/hero_work
cd $TEMPDIR
touch $TEMPDIR/big_data_file_$$
n1='
'
state_factor=$1
category_factor=$2
city_factor=$3
product_factor=$4
hiphen="-"
comma=","
### Write Table Columns Below
Col1="Txnno"
Col2="Txndate"
Col3="Custno"
Col4="Amount"
Col5="Category"
Col6="Product"
Col7="City"
Col8="State"
Col9="Spend_by"
####### Randomvariable declarations
rand1_Date_d="01"
rand2_Date_m="01"
rand5_Date_year="1999"
rand3_Transaction="0014"
rand4_cust_no="01155"
rand6_amount_no="0000"
######Column related variable declaration
var1_col1_txnno=0
var2_col2_txndate=0
var3_col3_custno=0
var4_col4_amount=0
var5_col5_category=0
var6_col6_product=0
var7_col7_city=0
var8_col8_state=0
var9_col9_spendby=0
write_value=${var1_col1_txnno}${comma}${var2_col2_txndate}${comma}${var3_col3_custno}${comma}${var4_col4_amount}${comma}${var5_col5_category}${comma}${var6_col6_product}${comma}${var7_col7_city}${comma}${var8_col8_state}${comma}${var9_col9_spendby}
Column_list=$Col1${comma}Col2${comma}$Col3${comma}$Col4${comma}$Col5${comma}$Col6${comma}$Col7${comma}$Col8${comma}$Col9
echo "$Column_list">big_data_file_$$
#####
####### Array of States
State[0]="UP"
State[1]="MP"
State[2]="Punjab"
State[3]="Delhi"
State[4]="WB"
### Array of Cities
City[0]="ABC"
City[1]="BCD"
City[2]="KJL"
City[3]="CGL"
City[4]="PPL"
#### Array of Products
Product[0]="ICECREAM"
Product[1]="Wheat"
Product[2]="CLOTHES"
Produt[3]="Laptop"
Product[4]="Bags"
Product[5]="Books"
#### Array of Categories
Category[0]="Foods"
Category[1]="Wearings"
Category[2]="Electronics"
###########3 Loop variables were initialized below
var_state_loop=0
var_city_loop=0
var_category_loop=0
var_product_loop=0
while (( var_state_loop -le $state_factor ))
do
if[ $var_state_loop -le 4 ]
then
echo "State loop part starts here.."
$var8_col8_state=${State[$var_state_loop]}
else
echo "State loop part ends here.."
while((var_city_loop -le ${city_factor} ))
do
echo "City Loop starts here"
if[ $var_city_loop -le 4 ]
then
$var7_col7_city=${City[$var_city_loop]}
else
echo "City Loop ends here"
while((var_category_loop -le ${category_factor}))
do
echo "Category loop started from here"
if[ $var_category_loop -le 3 ]
then
$var5_col5_category=${Category[$var_category_loop]}
else
echo"Category loop ended"
while((var_product_loop -le 6))
do
if [ $var_product_loop -le 6 ]
then
$var6_col6_product=${Product[$var_product_loop]}
$var1_col1_txnno=${var8_col8_state}${var7_col7_city}${var5_col5_category}${var6_col6_product}${rand3_Transaction}
while((rand5_Date_year -le 2016))
do
echo "starting date writing"
if[ ${rand1_Date_d} -le 31 -a ${rand2_Date_m} -le 12 ]
then
$var2_col2_txndate=${rand1_Date_d}${hiphen}${rand2_Date_m}${hiphen}${rand5_Date_year}
else
echo "Date part completed"
((ran5_Date_year+=1)))
done
$var3_col3_custno=${var8_col8_state}${var7_col7_city}${var5_col5_category}${var6_col6_product}${rand4_cust_no}
$var4_col4_amount=${rand6_amount_no}
$var9_col9_spendby=${var3_col3_custno}${hiphen}${var7_col7_city}
echo "The product loop finished for one product"
write_value=${var1_col1_txnno}${comma}${var2_col2_txndate}${comma}${var3_col3_custno}${comma}${var4_col4_amount}${comma}${var5_col5_category}${comma}${var6_col6_product}${comma}${var7_col7_city}${comma}${var8_col8_state}${comma}${var9_col9_spendby}
echo ${write_value}>>big_data_file_$$
##### Product end variable declaration
((rand3_Transaction+=1))
((rand6_amount_no+=212))
((var_product_loop+=1))
done
((var_category+=1))
done
((var_city_loop+=1))
done
((var_state_loop+=1))
done
コードを実行するたびに、次のエラーが発生します。
line 94: syntax error near unexpected token `then'
biggun.ksh: line 94: ` then'
答え1
いくつかのエラーが見つかりました:
- shebang は #!/bin/sh でなければなりません。これらはすべて
#
文法的なエラーです。 - 15-21行は4-11行と同じです(削除)。
- var
$
に58行目がありません。Col2
Column_list=
- 行59では、
echo "$Column_list">big_data_file_$$
以前に記録されたすべての情報を消去しますbig_data_file$$
。に変更>>
。 - 93、103、112、124行を
if[
に変更する必要がありますif [
。 - 114行目には
echo"Category
スペースが必要ですecho "Category
。 - 129行目にはクロージャーが3本ありますが
)
、1本を外してください。 - 129行、(())構文はsh(shebang)では無効です。
- 複数のターミネーターが欠落しており
fi
(少なくとも5つ)、1つが欠落している可能性がありますdone
。
疲れています。コードをテストし、整理し、宿題をしましょう。