CSV (Comma-seperated values, valores separados por vírgula) é um formato de arquivo que pode ser exportado de um banco de dados relacional (como Oracle ou SQL Server). Em seguida, ele pode ser importado para o Couchbase Server com o comando cbimport utilidade.
Observação: o cbimport é fornecido com o Couchbase Enterprise Edition. Para o Couchbase Community Edition, você pode usar a versão mais limitada cbtransferência ou usar a ferramenta carregador de arquivos cbdocloader se JSON for uma opção.
Um ETL relacional direto→CSV→Couchbase provavelmente não será a solução completa para a migração de dados. Em um post posterior, escreverei sobre as decisões de modelagem de dados que você terá de considerar. Mas esse é um ponto de partida: considere esses dados como "em estágios".
Observação: para esta postagem, estou usando o SQL Server e um cluster do Couchbase Server, ambos instalados localmente. As etapas serão semelhantes para o SQL Server, Oracle, MySQL, PostgreSQL, etc.
Exportar para CSV
A primeira coisa que você precisa fazer é exportar para CSV. Tenho um banco de dados relacional com duas tabelas: Invoices (faturas) e InvoiceItems (itens de fatura).

Vou exportar os dados dessas duas tabelas para dois arquivos CSV. Com o SQL Server Management Studio, isso pode ser feito de várias maneiras diferentes. Você pode usar sqlcmd ou bcp na linha de comando. Ou você pode usar a função Invoke-Sqlcmd e canalizá-lo através de Exportar-Csv. Você também pode usar a interface do usuário do SQL Server Management Studio.

Outros bancos de dados relacionais terão utilitários de linha de comando, ferramentas de interface do usuário etc. para exportar CSV.
Aqui está um exemplo de uma exportação CSV de uma tabela chamada "Invoices" (Faturas):
|
1 2 3 4 |
Id,InvoiceNum,InvoiceDate (data da fatura),BillTo,ShipTo 1,ABC123,2018-01-15 00:00:00.000,Lynn Hess,"Herman Trisler, 4189 Oak Drive" 2,XYZ987,2017-06-23 00:00:00.000,Yvonne Pollak,"Clarence Burton, 1470 Cost Avenue" 3,FOO777,2018-01-02 00:00:00.000,Phillip Freeman,"Ronda Snell, 4685 Valley Lane" |
Aqui está uma exportação de uma tabela relacionada chamada "InvoiceItems":
|
1 2 3 4 5 6 7 8 9 10 11 |
InvoiceId,Produto,Quantidade,Preço 1,Pneu,2,20.00 1,Direção Roda,5,10.00 1,Motor Óleo,10,15.00 1,Freio Almofada,24,1000.00 2,Mouse almofada,1,3.99 2,Mouse,1,14.99 2,Computador monitor,1,199.98 3,Cupcake,12,.99 3,Aniversário velas,1,.99 3,Entrega,1,30.00 |
Carregar CSV no Couchbase
Vamos importar esses dados para um bucket do Couchbase. Presumo que você já tenha criado um bucket vazio chamado "staging".
Primeiro, vamos importar invoices.csv.
Carregamento de faturas
|
1 |
C:\Programa Arquivos\Couchbase\Servidor\caixa\cbimport csv -c localhost -u Administrador -p senha -b preparação -d arquivo://invoices.csv --generate-key invoice::%Id% |
Observação: no Linux/Mac, em vez de C:\Arquivos de programas\Couchbase\Server\bino caminho será diferente.
Vamos detalhar isso:
-
cbimport: Esse é o utilitário de linha de comando que você está usando
-
csv: Estamos importando de um arquivo CSV. Você também pode importar de arquivos JSON.
-
-c localhost: O local do seu cluster do Couchbase Server.
-
-u Administrador -p senha: Credenciais para seu cluster. Esperamos que você tenha credenciais mais seguras do que as deste exemplo!
-
-b preparação: O nome do bucket do Couchbase em que você deseja que os dados sejam armazenados
-
-generate-key invoice::%Id% O modelo que será usado para criar chaves exclusivas no Couchbase. Cada linha do CSV corresponderá a um único documento. Cada documento precisa de uma chave exclusiva. Decidi usar a chave primária (número inteiro) com um prefixo indicando que se trata de um documento de fatura.
O resultado final da importação de um arquivo de 3 linhas são 3 documentos:

Nesse ponto, o bucket de preparação somente contém documentos de fatura, portanto, talvez você queira realizar transformações agora. Talvez eu faça isso em exemplos de modelagem posteriores, mas, por enquanto, vamos passar para o próximo arquivo.
Carregamento de itens da fatura
|
1 |
C:\Programa Arquivos\Couchbase\Servidor\caixa\cbimport csv -c localhost -u Administrador -p senha -b preparação -d arquivo://invoice_items.csv --generate-key invoiceitem::#UUID# |
Essa importação é praticamente idêntica à última. Uma diferença é que se trata de um novo arquivo (invoice_items.csv). Mas a diferença mais importante é que -generate-key. Esses registros contêm apenas chaves estrangeiras, mas cada documento no Couchbase deve ter uma chave exclusiva. Por fim, podemos decidir incorporar esses registros em seus documentos de fatura principal. Mas, por enquanto, decidi usar o UUID para gerar chaves exclusivas para os registros.
O resultado final da importação desse arquivo de 10 linhas são mais 10 documentos:

O que vem a seguir?
Uma vez que você tenha um arquivo CSV, é muito fácil colocar os dados no Couchbase. Entretanto, esse tipo de tradução direta muitas vezes não é suficiente por si só. Explorei alguns aspectos da modelagem de dados em um Postagem anterior do blog sobre migração do SQL ServerMas, em breve, revisitarei esse exemplo de Invoices em uma postagem de atualização no blog.
Enquanto isso, não deixe de conferir Como o Couchbase supera a Oracle para obter mais informações sobre por que as empresas estão substituindo a Oracle em determinados casos de uso. E também dê uma olhada na Mudança do sistema relacional para o NoSQL: Como começar white paper.
Se tiver alguma pergunta ou comentário, fique à vontade para deixá-los aqui, entre em contato comigo em Twitter @mgrovesou faça sua pergunta na seção Fóruns do Couchbase.