Coder Social home page Coder Social logo

docker-salic-mssql's Introduction

docker-salic-mssql

Docker para rodar o banco do Salic para desenvolvimento(SQL Server) e ferramenta de importação de dados.

Este projeto possui duas vertentes, são elas:

  • Uma estrutura básica do salic, com todas as tabelas de apoio e um usuário administrador com todos os perfis do sistema.
  • Uma ferramenta de migração em python, que faz cópia de informações de um banco de origem para um banco destino.

MacOS

Atualmente existe alguns problemas para compartilhamento de volume e mapeamentos de portas nessa imagem para o MacOS o comando abaixo resolve.

docker-compose run --rm --service-ports salic-mssql

Linux

Ajustar o docke-compose.yml para linux

Fazer o build para gerar as tabelas com dados iniciais

docker-compose up --build

Sem gerar tabelas

docker-compose up

work in progress

Migrações

Este container conta com uma ferramenta de migração, que permite que dados sejam migrados de um banco para outro. Isso vale para qualquer banco com inserção autorizada por credenciais. É possível escolher uma fonte de dados num banco de produção, desenvolvimento, homologação etc, e definir um banco alvo - um docker ou mesmo um banco de hmg/dev.

Configurando origem e destino:

Para configurar os bancos de dados, preencha os dados para db_source (origem) e db_target (destino) no arquivo migrate/dbconfig.py:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

db_config = {
    "db_source": {
        "host": "otherhost",
        "user": "user",
        "pass": "password",
        "port": "1434",
        "dbname": "sac",
        "schema": "dbo",
    },
    "db_target": {
        "host": "localhost",
        "user": "SA",
        "pass": "salic@123456",
        "port": "1433",
        "dbname": "sac",
        "schema": "dbo",
    }
}

Funcionalidades

Atualmente, a ferramenta de importação possui duas funcionalidades: migrate e flush

Migrate

Executa a importação de dados a partir de um db_source para um db_target.

Flush

Apaga todos os dados das tabelas especificadas para um db_target.

Importando dados específicos do seu módulo

Ao fazer o build do docker-compose, uma primeira migração será executada. Ela contém diversas tabelas de apoio e usuários padrão para realizar login.

Para gerar uma migração com os dados do seu módulo (ex: parecer, readequação, comprovação financeira etc) é necessário criar os arquivos de tabelas com as respectivas condições de importação, na pasta migrate/tables/[nomedomodulo].

Cada pasta de módulo contém arquivos de definição de tabelas, separadas por arquivos com o padrão '[00]-[nomedobanco].[schema].tbl'. No caso, 00 seria a ordem de execução, nomedobanco o nome do database, e schema. Os arquivos devem possuir a terminação .tbl e obedecer o padrão descrito; caso contrário, não serão executados. Exemplos válidos para o salic de definições de bancos válidas:

$ ls migrate/tables/0-initial
00-agentes.dbo.tbl
01-sac.dbo.tbl
02-tabelas.dbo.tbl

Dentro dos arquivos de definição de tabelas, o padrão é o abaixo:

[nome_da_tabela]|[CONDIÇÕES]|[chave_primária]

Num caso real, seria:

tipos_pessoa||
categorias_pessoa||
pessoas|INNER JOIN tabelas.dbo.Usuarios on usuarios.usu_pessoa = pessoas.pes_codigo and usuarios.usu_identificacao = '12345678900'|
pessoa_identificacoes|INNER JOIN tabelas.dbo.orgaos on orgaos.org_pessoa = pessoa_identificacoes.pid_pessoa|pid_pessoa

Toda tabela que precisar de JOINs ou de restrições WHERE deve ter esse tipo de dado preenchido na segunda posição entre | (pipes). Caso esse campo estiver vazio, o SQL executado será um SELECT * FROM sem restrições. O mesmo vale para chave primária: caso não seja especificada, o script buscará pela primeira chave primária informada no banco.

Outro detalhe importante é a ordem de execução: primeiro as tabelas assistentes, ou com dados que servirão a relacionamentos (constraints). No caso de um FLUSH, a ordem de execução é invertida - isto é, são executadas as instruções de baixo primeiro. No FLUSH até o momento não existe a opção de exclusão condicional de uma tabela, o que quer dizer que todos os dados daquela tabela serão apagados.

Uso

$ docker exec -it salic-mssql bash
# cd migrate
# ./main migrate nomedomodulo

# ./main flush nomedomodulo

docker-salic-mssql's People

Contributors

fernao avatar clebersantos avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.