Quando estou em um grupo de usuários ou em uma conferência, as pessoas geralmente me procuram depois com boas perguntas. Essa é uma ótima maneira de obter ideias para postagens no blog: se elas têm uma pergunta, é provável que muitas outras pessoas tenham a mesma. Também é uma ótima maneira de eu conhecer Couchbase melhor.
Esta postagem é para uma dessas perguntas: Posso copiar documentos de um bucket para outro??
Copiar de um bucket para outro
Sim! Na verdade, se você já fez esse tipo de coisa no SQL, então não está muito longe de já saber a resposta.

Existem ferramentas de linha de comando para backup/restaurar um bucket, mas, para este post, vou supor que o que você deseja é fazer uma cópia de alguns documentos do bucket A para o bucket B.
É tão fácil quanto usar um N1QL INSERT.
Comece criando um N1QL para obter os documentos que você deseja do primeiro bucket. Vou mostrar um exemplo bem simplificado SELECT que recebe todos os documentos de minha SELECT balde. Se você quiser apenas um subconjunto, poderá usar um padrão cláusula.Onde
|
1 2 |
SELECT META().id _k, _v from `default` _v |
Como estamos copiando para outro bucket, precisamos tanto da chave quanto do próprio documento. Essa consulta seleciona a chave do documento usando o parâmetro e seleciona o documento usando uma função META() pseudônimo._v
Em seguida, criarei um para colocar esses documentos selecionados em outro bucket, que chamei de INSERIR.alvo
|
1 2 3 |
INSERT INTO `target` (KEY _k, VALUE _v) SELECT META().id _k, _v from `default` _v |
Um precisa de uma chave e um valor. Eu os tenho do INSERIR. Tudo pronto.SELECT
Mais informações sobre o N1QL INSERT
O link:N1QL INSERT é muito poderoso e há muitas outras coisas que você pode fazer com ele:
- Inserir um único documento
- Inserções a granel
- Inserir valores usando
(que é semelhante ao que fizemos nesta postagem)SELECT - Inserir valor com uma chave de combinação, usando uma projeção
- Inserir valores usando subconsultas
- Inserir valores usando funções N1QL
- Usando o preparado
consultasINSERIR
Observe que as advertências típicas se aplicam: certifique-se de ter uma boa indexação quando estiver gravando o SELECT. Se estiver copiando muitos documentos, talvez seja necessário ajustar temporariamente o tempo limite. Todos os documentos em um bucket devem ter uma chave exclusiva. Não há reversão ao inserir vários documentos: se um falha no décimo documento de 100, os primeiros 9 documentos ainda estão inseridos.INSERIR
Para obter respostas mais detalhadas sobre o N1QL, confira a seção Fórum N1QL do Couchbase.
Siga-me no Twitter Se tiver alguma dúvida: sua pergunta pode se tornar minha próxima postagem no blog!