사용자 그룹이나 컨퍼런스에 참석하면 사람들이 종종 좋은 질문을 가지고 저에게 다가옵니다. 제가 블로그 게시물 아이디어를 얻을 수 있는 좋은 방법이기도 하고, 질문이 있으면 다른 사람들도 같은 질문을 할 가능성이 높기 때문입니다. 또한 다음과 같은 사실을 알 수 있는 좋은 기회이기도 합니다. 카우치베이스 더 좋습니다.
이 게시물은 이러한 질문 중 하나에 대한 답변입니다: 한 버킷에서 다른 버킷으로 문서를 복사할 수 있나요??
버킷에서 버킷으로 복사
예! 사실 SQL로 이런 종류의 작업을 해본 적이 있다면 이미 답을 알고 있는 것과 크게 다르지 않습니다.

사용하는 것만큼이나 간단합니다. N1QL 삽입.
먼저 N1QL을 생성하여 시작하세요. 선택 를 사용하여 첫 번째 버킷에서 원하는 문서를 가져올 수 있습니다. 매우 간소화 된 선택 그 결과 모두 내 문서에서 기본값 버킷을 사용하세요. 하위 집합만 필요한 경우에는 절을 사용합니다.WHERE
|
1 2 |
SELECT META().id _k, _v from `default` _v |
다른 버킷으로 복사하는 것이므로 키와 문서 자체가 모두 필요합니다. 이 쿼리는 문서 키를 선택하기 위해 함수를 사용하여 문서를 선택하고 META()_v 별칭.
다음으로 를 호출하여 선택한 문서를 다른 버킷에 넣습니다. INSERT대상.
|
1 2 3 |
INSERT INTO `target` (KEY _k, VALUE _v) SELECT META().id _k, _v from `default` _v |
An 에는 키와 값이 필요합니다. 저는 INSERT선택. 모두 완료되었습니다.
N1QL 삽입에 대한 자세한 정보
링크:N1QL 삽입 는 매우 강력하며, 이를 통해 할 수 있는 다른 많은 일들이 있습니다:
- 단일 문서 삽입
- 대량 삽입
- 다음을 사용하여 값을 삽입합니다.
선택(이 게시물에서 한 것과 유사합니다.) - 투영을 사용하여 조합 키로 값을 삽입합니다.
- 하위 쿼리를 사용하여 값 삽입
- N1QL 함수를 사용하여 값 삽입
- 준비된 사용
쿼리INSERT
일반적인 주의 사항이 적용된다는 점에 유의하세요. SELECT를 작성할 때 인덱싱이 잘 되어 있는지 확인하세요. 많은 문서를 복사하는 경우 일시적으로 시간 제한을 조정하는 것이 좋습니다. 버킷에 있는 문서에는 모두 고유 키가 있어야 합니다. 여러 문서를 삽입할 때 롤백이 되지 않습니다. 100개 중 10번째 문서에서 실패하면 처음 9개의 문서가 계속 삽입됩니다.INSERT
N1QL에 대한 자세한 답변은 다음을 참조하세요. 카우치베이스 N1QL 포럼.
트위터에서 팔로우하기 질문이 있으시면 다음 블로그 게시물이 될 수도 있습니다!