昨天演算法同學讓幫忙從三個表里取數,這三個表的一些欄位還要能關聯的上
剛接這個任務,有點沒思路,后來想的是先定一個表1萬條資料,然后后面兩個表的資料都跟這1萬條資料保持一致,這就涉及到傳參了,大概思路是用shell腳本來寫
之前都是在shell腳本里傳一個引數,這次要傳三個引數,沒搞過,和同事一起研究了一下,記錄一下
傳一個引數的情況:
#!/bin/bash
for line in cat marco.csv
do
impala-shell -q “select * from xxx” -B -o ‘xxx.csv’
done
大概就是這樣
傳兩個引數呢?
只能用一個line,第二個引數就進不來了
要換一種寫法
#!/bin/bash
for line in cat marco.csv
do
OLD_IFS=“
I
F
S
"
I
F
S
=
"
,
"
a
r
r
a
y
=
(
IFS" IFS="," array=(
IFS"IFS=","array=(line)
IFS=”$OLD_IFS"
impala-shell -q "
insert into table xxx.marco1
select
naruto,
grade,
‘
a
r
r
a
y
[
1
]
′
a
s
s
c
o
r
e
,
d
a
t
e
f
r
o
m
x
x
x
.
m
a
r
c
o
2
w
h
e
r
e
n
a
r
u
t
o
=
′
{array[1]}' as score, date from xxx.marco2 where naruto = '
array[1]′asscore,datefromxxx.marco2wherenaruto=′{array[0]}’
limit 1;"
done

核心就是紅框里這段代碼,別問為什么,加上就對了
最后,其實沒有這么用,
按照這個思路,昨天搞了一晚上,細節太多,總是出錯
今天睡了一覺起來,突然覺得其實不用傳參,直接從3個表里拿資料,五分鐘就搞好了,哎,尷尬
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/276973.html
標籤:其他
