2017-12-29 34 views
1
awk -F, 'NR > 0{print "SET", "\"calc_"NR"\"", "\""$0"\"" }' files/calc.csv | unix2dos | redis-cli --pipe 

,CSV 가져 오기는 내가 좋아하는 캐릭터 datatype.Something와 레디 스 데이터베이스에 csv 파일을 가져올 수 위의 명령을 사용

set cal_1 product,cost,quantity 
set cal_2 t1,100,5 

가 어떻게 필드 이름의 해시 데이터 형식으로 가져 옵니까 해시 데이터 유형 레디 스합니다 rowcount, 열 머리글로 키, awk에서 열 값으로 값.

HMSET calc:1 product "t1" cost 100 quantity 5 
HMSET calc:2 product "t2" cost 500 quantity 4 

입력 파일 예 :

내가 CSV 파일에 존재하는 각 행에 대해 AWK 에서이 결과를 얻을 수
product cost quantity 
t1   100  5 
t2   500  4 
t3   600  9 

,

HMSET calc_'row없는 '1 행 1 열 값 전류 행 1 열 값 1 행 2 열 값 현재 행 2 열 값 1 행 3 열 값 행 3 열 값

위의 예에서 ,

동적으로 모든 행에 대해?

+0

내가 당신을 도와 드릴 것입니다하지만 당신은 당신의 입력 및 예상 출력을 명확히 수 있고 당신은 내가 샘플 입력과 출력을 추가 한 @Allan – Allan

+0

을 ;-)을 위해 내가 할 것 지금 확인하십시오. TIA – Shyamala

+0

그리고 광대 한 것입니다 같이 데이터를 가져올 루프를 실행하고 싶지 않아 – Shyamala

답변

1

다음과 같은 awk 명령을 사용할 수 있습니다

[(product,cost,quantity),(t1,100,5)(t2,500,4)(t3,600,9)] 

enter image description here

,536,913,632 :

product cost quantity 
t1   100  5 
t2   500  4 
t3   600  9 

그것은 다음과 같은 출력을 제공합니다 : 당신의 입력 파일에

awk '{if(NR==1){col1=$1; col2=$2; col3=$3}else{product[NR]=$1;cost[NR]=$2;quantity[NR]=$3;tmp=NR}}END{printf "[("col1","col2","col3"),"; for(i=2; i<=tmp;i++){printf "("product[i]","cost[i]","quantity[i]")";}print "]";}' input_file.txt 

을 10

AWK 명령 :

# gawk profile, created Fri Dec 29 15:12:39 2017 

# Rule(s) 

{ 
     if (NR == 1) { # 1 
       col1 = $1 
       col2 = $2 
       col3 = $3 
     } else { 
       product[NR] = $1 
       cost[NR] = $2 
       quantity[NR] = $3 
       tmp = NR 
     } 
} 

# END rule(s) 

END { 
     printf "[(" col1 "," col2 "," col3 ")," 
     for (i = 2; i <= tmp; i++) { 
       printf "(" product[i] "," cost[i] "," quantity[i] ")" 
     } 
     print "]" 
} 
+0

아니요. 질문이 명확하지 않습니다. 파일을 redis 데이터베이스로 가져오고 redis에서 가져 와서 예상되는 결과를 얻고 싶습니다. 직접 csv에 들어 가지 않습니다. – Shyamala

+0

그리고 그것은 단지 예제 입력이었습니다. 정확히 열 이름이나 카운트를 알지 못할 것입니다. – Shyamala

+0

알겠습니다 ... 나는 'redis' 전문가가 아닙니다. 죄송 합니다만, awk에 대한 도움이 필요하면 도와 드리겠습니다. -) – Allan

관련 문제