[hive] 전의 부 처리
2888 단어 [hive]
사용 도구: hive + shell
예제 데이터:
ID
시간.
표제
묘사 하 다.
1
2018-5-8 17:43:50
[hive] 전의 부호 의 "처리"
데이터베이스 에 있 는 표 한 장, 어떤 필드 에 데 이 터 를 저장 할 때 줄 바 꿈 문자, 작은 따옴표 등 기호 가 있 습 니 다.업무 수요 로 인해 이 표 의 데 이 터 를 json 형식 으로 연결 하여 인터페이스 로 업로드 해 야 합 니 다.
2
2018-5-8 17:43:53
[hive] 전의 부 처리
데이터베이스 에 있 는 한 장의 표, 한 필드 에 데 이 터 를 저장 할 때 줄 바 꿈 문자 '\ t', 따옴표 '' 등 기호 가 있 습 니 다. 업무 상 필요 하기 때문에 이 표 의 데 이 터 를 json 형식 으로 연결 하여 인 터 페 이 스 를 호출 하여 업로드 해 야 합 니 다.
Linux 에서 hive - e "$sqlcode "에서 $sql code 는 3 번 전 의 됩 니 다. 그래서 저 는 hive - f $sql path 방식 으로 hive sql 스 크 립 트 파일 을 직접 실 행 했 습 니 다.
특수 기호 앞 에 전의 문자 '\' 를 추가 하 는 것 이 아니 라 모든 줄 바 꿈 문자, 작은 따옴표 를 '' 로 바 꾸 는 방식 을 사용 합 니 다. (이 방식 은 바람 직 하지 않 습 니 다)
select
concat('{\"ID\":',ID,
',\" \":\"', ,
',\" \":',regexp_replace( ,'(\\\\|\\\s|\")','_'), -- ('\s': )
',\" \":',regexp_replace( ,'(\\\\|\\\s|\")','_'),'}') as json -- hive -e 8 '\'
from
table;
JSon 꼬치 로 연결 한 후 대량 업 로드 를 위해 다음 과 같은 방식 을 사용 합 니 다.
select
concat('[',new_json,']') as result
from(
select
concat_ws('\,',collect_set(rec)) as new_json
from (
select
row_number() over(order by t1.articleid) as row_id,
concat('{\"ID\":',ID,
',\" \":\"', ,
',\" \":',regexp_replace( ,'(\\\\|\\\s|\")','_'), -- ('\s': )
',\" \":',regexp_replace( ,'(\\\\|\\\s|\")','_'),'}') as json
from
table
)
group by
ceil(row_id/20)
) tmp;
최종 출력 결과:
result
[{"ID": 1, "시간": "2018 - 5 - 8 17: 43: 50", "제목": "[hive] 전의 자의 처리", "설명": "데이터베이스 에 있 는 한 장의 표, 한 필드 에 데 이 터 를 저장 할 때 줄 바 꿈 자, 따옴표 등 기호 가 있 습 니 다. 업무 상 필요 하기 때문에 이 표 의 수 를 json 형식 으로 연결 하여 인 터 페 이 스 를 호출 하여 업로드 해 야 합 니 다."}, {"ID": 2, "시간": "2018 - 5 - 8 17: 43: 53", "제목": "[hive] 전의 자의 처리", "설명"":" 데이터베이스 에 있 는 표 한 장, 한 필드 에 데 이 터 를 저장 할 때 줄 바 꿈 문자 '\ t', 작은 따옴표 '' 등 기호 가 있 습 니 다. 업무 상 필요 하기 때문에 이 표 의 데 이 터 를 json 형식 으로 연결 하여 인 터 페 이 스 를 호출 하여 업로드 해 야 합 니 다. "}]