2017-03-07 1 views
1

나는 beeline에서 인용 된 csv 결과를 얻으려고합니다. I 출력줄을 사용하여 csv 출력을 인용하십시오.

"a","b" 
"1","2" 

로 예상되지만 비 인용 버전을

beeline -u 'jdbc:hive2://localhost:10000/' --outputformat=csv2 -e 'set system:disable.quoting.for.sv=false; select 1 as a, 2 as b'

:처럼 내 쿼리 보인다. documentation에 따르면

:

인용은 true로 disable.quoting.for.sv 시스템 변수를 설정하여 비활성화 할 수 있습니다.

내가 여기 뭔가 잘못하고 있다고 가정합니다. 이 변수를 어떻게 false로 설정할 수 있습니까? 내 쿼리에이 작업을 수행하는 것은 hive-site.xml을 사용하지 않는 트릭을 수행하는 것 같지 않습니다.

참고 : hdp 2.5의 하이브 1.2.1.

답변

1

인용 필드에 유용 /에만 필요합니다.

따라서 1 2,3을 쓰려고하면 마지막 값은 1,"2,3"이어야합니다.

필드를 인용해도 문자열로 취급되어야한다는 의미는 아닙니다. "2,3"은 여전히 ​​숫자입니다 (이 경우 ,이 소수 구분 기호 인 경우).

일부 csv 작성자는 모든 필드 주위에 따옴표를 추가합니다. 이는 완전히 불필요하며 아무런 이점도없이 파일을 크게 만듭니다.

문서는 너무 이것에 대해 분명한 것 같다 :

해제되지 않습니다 인용하면, 따옴표는 (예 : 구분 기호 나 따옴표 문자로) 특수 문자가 포함 된 경우 값 주위에 추가됩니다

또는 여러 줄에 걸쳐 있습니다.

앞에 큰 따옴표를 붙이면 큰 따옴표가 이스케이프 처리됩니다.

+0

설명서가 실제로 분명해야합니다 ... 정말 고마워요! – Guillaume

0

당신이 시도 할 수 : 필드 구분 또는 개행 문자가 포함 된 경우 CSV에서

beeline --disableQuotingForSV=true --verbose=true -u 'jdbc:hive2://localhost:10000/' --outputformat=csv2 -e 'select 1 as a, 2 as b' 
+0

변경 사항 없음. 이걸 어디에서 발견했는지 궁금합니다. – Guillaume

+3

여기에 https://issues.apache.org/jira/browse/HIVE-14679 – jedijs

+1

사실,하지만 나를 위해 작동하지 않습니다. 다른 옵션 (HADOOP_CLIENT_OPTS = "- Ddisable.foroting.for.sv = false")은 수락 된 대답의 설명을 이해할 때 트릭을 수행합니다. – Guillaume

관련 문제