[hive] 전의 부 처리

2888 단어 [hive]
설명: 데이터베이스 에 있 는 한 장의 표, 한 필드 에 데 이 터 를 저장 할 때 줄 바 꾸 기, 따옴표 등 기 호 를 가지 고 있 습 니 다.업무 수요 로 인해 이 표 의 데 이 터 를 json 형식 으로 연결 하여 인터페이스 로 업로드 해 야 합 니 다.연결 할 때 전의 문자 처리 에 대한 경험 이 부족 하여 연결 에 실패 하고 연구 한 후에 해결 합 니 다.
사용 도구: 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 형식 으로 연결 하여 인 터 페 이 스 를 호출 하여 업로드 해 야 합 니 다. "}]

좋은 웹페이지 즐겨찾기