2017-02-23 10 views
0

나는 #의 -prefix에 저장되는 임시 테이블에 대한 SAP의 HANA 데이터베이스와 쿼리에 연결 RJDBC를 사용하려고 해요 :는 dbGetQuery()에 해시 태그를 포함

test <- dbGetQuery(jdbcConnection, 
     "SELECT * FROM #CONTROL_TBL") 

# Error in [...]: invalid table name: Could not find table/view #CONTROL_TBL in schema USER 

내가 실행하면 한에서 SQL 문을, 그것은 완벽하게 작동합니다. 영구 테이블을 쿼리 할 수도 있습니다. 그러므로 R은 해시 태그를 넘지 않는다고 가정합니다. 그러나 "SELECT * FROM \\#CONTROL_TBL"과 같은 이스케이프 삽입은 내 문제를 해결하지 못했습니다.

답변

0

테이블에 특수 문자가 포함되어 있으므로 큰 따옴표로 묶어야합니다 (자세한 내용은 SAP Help, identifiers 참조).

테스트 < - dbGetQuery (jdbcConnection, ' "#CONTROL_TBL"SELECT * FROM') stackoverflow

도 참조 관련 논의.

+0

감사합니다. Ive는 그것을 시도했다. 그러나 그것은 일하는 것처럼 보이지 않는다. 여전히 동일한 오류 메시지가 나타납니다. 임시 테이블을 읽는 데 성공한 적이 있습니까? 어쩌면 그들이 만든 세션에서 살 수있는 유일한 원인이 아닐까요? – laterstat

+0

방금 ​​확인했습니다. 현지 임시 직원 용입니다. 테이블 큰 따옴표는 선택 사항입니다. 다음 코드는 따옴표를 생략해도 작동합니다. 로컬 임시 테이블 "#LTTEST"(key nvarchar (10), 값 nvarchar (100))를 만듭니다. "#LTTEST"(키, 값) 값 ('1', 'some value')에 삽입하십시오. select * from "#LTTEST"; HANA SQL 참조 서에 간단한 식별자는 { | }, 나는 아직도 그것을 인용 할 것이다. 세션에 대한 귀하의 의견입니다. loc 만 조회 할 수 있습니다. 임시 동일한 세션의 테이블을 사용하는 경우 R에서 가능한지 알 수 없습니다. –

1

로컬 또는 글로벌 임시 테이블의 데이터를 다른 세션에서 쿼리 할 수 ​​없습니다. 세션은 정의에 따라 세션마다 다르기 때문에 쿼리 할 수 ​​없습니다. 전역 임시 테이블의 경우 세션에서 공유되므로 테이블의 메타 데이터를 쿼리 할 수 ​​있습니다.

출처 : Tutorial for HANA temporary tables

0

좋아, 로컬 임시 테이블은 항상 전역 임시 테이블 그냥 일반 테이블처럼 볼 수 있습니다 동안 그들은, 정의 된 적이있는 세션 만 볼 수 있지만, 데이터가 세션 비공개입니다.

따라서 로컬 temp를 생성 한 경우 테이블 (이름이 #로 시작하는)을 다른 세션에 넣으면 아무런 문제도 발견되지 않습니다.

예를 들어 질문은 다음과 같습니다. 왜 처음에는 임시 테이블이 필요합니까? 대신에 다음과 같이 할 수 있습니다. 뷰 또는 테이블 함수를 정의하여 데이터를 선택하십시오.