Cuando estoy en un grupo de usuarios o en una conferencia, la gente a menudo se me acerca después con buenas preguntas. Es una forma estupenda de obtener ideas para publicar en el blog: si tienen una pregunta, lo más probable es que muchas otras personas tengan la misma. También es una buena forma de conocer a otras personas. Couchbase mejor.
Este post responde a una de esas preguntas: ¿puedo copiar documentos de un cubo a otro??
Copiar de cubo a cubo
De hecho, si has hecho este tipo de cosas en SQL, no estás muy lejos de conocer la respuesta.

Existen herramientas de línea de comandos para copia de seguridad/restaurar un cubo, pero para este post, voy a suponer que lo que quieres es hacer una copia de algunos documentos del cubo A al cubo B.
Es tan fácil como utilizar un N1QL INSERTAR.
Empiece por crear un N1QL SELECCIONAR
para sacar los documentos que quieras del primer cubo. Voy a mostrar una muy simplificada SELECCIONAR
que consigue todos los documentos de mi por defecto
cubo. Si sólo desea un subconjunto, puede utilizar una función
cláusula.DÓNDE
1 2 |
SELECCIONE META().id _k, _v de `por defecto` _v |
Dado que estamos copiando a otro bucket, necesitamos tanto la clave como el propio documento. Esta consulta selecciona la clave del documento mediante la función META()
y selecciona el documento mediante una función _v
alias.
A continuación, crearé un INSERTAR
para poner estos documentos seleccionados en otro cubo, que llamé objetivo
.
1 2 3 |
INSERTAR EN `objetivo` (CLAVE _k, VALOR _v) SELECCIONE META().id _k, _v de `por defecto` _v |
En INSERTAR
necesita una clave y un valor. Tengo los de la SELECCIONAR
. Todo hecho.
Más información sobre N1QL INSERT
El enlace:N1QL INSERTAR es muy potente, y se pueden hacer muchas otras cosas con él:
- Insertar un único documento
- Inserciones a granel
- Insertar valores mediante
SELECCIONAR
(que es similar a lo que hicimos en este post) - Insertar valor con una tecla de combinación, utilizando una proyección
- Insertar valores mediante subconsultas
- Insertar valores utilizando funciones N1QL
- Utilización de preparados
INSERTAR
consultas
Ten en cuenta que se aplican las advertencias típicas: asegúrate de tener una buena indexación cuando escribas el SELECT. Si está copiando muchos documentos, puede que desee ajustar temporalmente el tiempo de espera. Todos los documentos de un bucket deben tener una clave única. No hay vuelta atrás cuando se insertan varios documentos: si un INSERTAR
falla en el 10º documento de cada 100, los 9 primeros documentos siguen insertados.
Para obtener respuestas más detalladas sobre N1QL, consulte la página Foro Couchbase N1QL.
Sígame en Twitter si tiene alguna pregunta: ¡puede que su pregunta se convierta en la próxima entrada de mi blog!