Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/html/wp-includes/post-template.php on line 284

Usando DBDesigner com PostgreSQL

   No meu curso de Ciência da Computação(que estou cursando 3o ano), tenho uma matéria de Banco de Dados, no caso o banco usado pelo Professor em sala é o PostgreSQL. No começo do ano começamos a usar o DBDesigner, e no caso ele é uma versão para o MySQL. Nada impede de usar ele com o Postgre, mas tem um pequeno detalhe. O DBDesigner não entende o tipo SERIAL(que é usado para auto-incremento), no caso é criado um novo tipo de dado, chamado SERIAL(claro), aí vem o problema, ao exportar pelo DBDesigner ele faz o campo que é usada como chave estrangeira também ser SERIAL, mais o correto seria ele ser INTEGER, para resolver esse problema é necessário alterar o XML referente nas linhas onde tem o idDatatype para o tipo de dado referente ao SERIAL.

   Como eu uso linux no meu notebook fica fácil, nada que o sed não resolva, mas antes vamos achar qual o código referente ao tipo de dado do SERIAL:


$ grep SERIAL exemplo.xml
<DATATYPE ID="44" IDGroup="4" TypeName="SERIAL" Description="User defined Datatype." ParamCount="0" OptionCount="0" ParamRequired="0" EditParamsAsString="0" SynonymGroup="0" PhysicalMapping="0" PhysicalTypeName="" >

   No meu caso o código referente ao tipo de dado SERIAL é o 44, como mostra o resultado acima.

   Agora que já sabemos o código, basta usar o sed para alterar:

$ sed -ri.velho 's/^(.*idDatatype=\")44(\".*IsForeignKey="1\".*)/\15\2/' exemplo.xml

   Ele não vai mostrar nada, somente vai alterar o arquivo e salvar o antigo com extensão .velho, sendo assim vai ter 2 arquivos: o exemplo.xml e o exemplo.xml.velho, contendo o arquivo alterado e o antigo respectivamente.

Explicando o comando:

sed - o comando usado para a "mágica", a sintaxe dele é sed <opcoes> <comando> <arquivo>
opções = -ri.velho = -r para usar expressões regulares, -i para alterar o arquivo, o .velho para renomear esse e salvar outro com mesmo nome
comando = opc/origem/destino/
   opc -> s - diz ao sed para usar a função de substituir
   origem - como ta no texto
   destino - como deve ficar
      ^ - começo de linha
      .* - guloso, pega tudo o que tiver na linha, ou até encontrar algo referente ao que tiver na frente
      \" - é a aspas mesmo, mais como ela é um "carácter especial" tenho que proteger para mostrar no comando.
      () - o "abre e fecha parenteses" diz ao sed que o que tiver dentro dele será um conjunto, no caso tenho 2 conjuntos, podem ser utilizados até 9 conjuntos.
      \numero - são os espelhos dos conjuntos criados. no caso utilizei o \1 e o \2, não confunda o \15, na verdade é \1 e o numero 5. nesse caso o \1 estaria me trazendo o primeiro e o \2 o segundo conjunto, lembrando que pode ser utilizados até 9 conjuntos.

Simplificando: ele vai pesquisar por linhas que comecem com qualquer coisa, e nela tenha o idDatatype=”44″ mais alguma coisa(.*), o IsForeignKey=”1″ e o final dessa mesma linha e alterar o 44(SERIAL) por 5(INTEGER). Seria isso, não ficou bem explicado? Comenta a sua dúvida que eu respondo 😀

Agora é só exportar o arquivo que vai estar certo, com o SERIAL nas chaves primárias e INTEGER nas chaves estrangeiras.

Exemplo Utilizado: exemplo.xml

Link permanente para este artigo: http://laerciomotta.com/2011/08/10/usando-dbdesigner-com-postgresql/

2 comentários

  1. Para Windows, pode fazer um tutorial? Obrigado!

    1. Cara, para Windows é só baixa, e instala.. Mesma coisa que no LInux 😀

Deixe uma resposta para Vinicius Cancelar resposta

Seu e-mail não será publicado.