|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Ter Mai 03, 2011 10:33 am Assunto: |
|
|
opa, obrigado. e ja estou preparando mais artigos
eu nao conheco a fundo o FB, mas ja vi na net uma dll q permite fazer a atualizacao do bd. vou procurar e posto aqui o endereco onde tem. _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Ter Mai 03, 2011 10:42 am Assunto: |
|
|
opa. prometido e cumprido. ta ai o link:
http://mundodoprogramador.wordpress.com/2011/03/09/usando-comparabanco-dll/
se alg souber os comandos para pegar informacoes do BD firebird, e quiser escrever um artigo para a revista em conjunto, ta feito o convite.
algumas funcoes do mysql:
SHOW DATABASES - lista os databases
SHOW TABLES - lista as tabelas de um banco de dados
DESC TABLE - lista as definicoes de campos de uma tabela
SHOW CREATE TABLE - mostra o comando CREATE TABLE para uma tabela
SHOW INDEX - mostra os indices de uma tabela
entre outros.
so achar no Fb comandos semelhantes q escrevemos o artigo. e pode ser para FB, IB, SQL Server, Oracle.... _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Mai 03, 2011 11:02 am Assunto: |
|
|
joemil escreveu: | opa. prometido e cumprido. ta ai o link:
http://mundodoprogramador.wordpress.com/2011/03/09/usando-comparabanco-dll/
se alg souber os comandos para pegar informacoes do BD firebird, e quiser escrever um artigo para a revista em conjunto, ta feito o convite.
algumas funcoes do mysql:
SHOW DATABASES - lista os databases
SHOW TABLES - lista as tabelas de um banco de dados
DESC TABLE - lista as definicoes de campos de uma tabela
SHOW CREATE TABLE - mostra o comando CREATE TABLE para uma tabela
SHOW INDEX - mostra os indices de uma tabela
entre outros.
so achar no Fb comandos semelhantes q escrevemos o artigo. e pode ser para FB, IB, SQL Server, Oracle.... | Obrigado amigo...
Então, hj no meu sistema faço da seguinte forma: Tenho uma unidade que tem todas tabelas, triggers, sp e cfe é alterado algum, vou criando novos campos usando o alter table, create table etc... Mais tem um pouco de trabalho pq. sempre preciso rodar uma nova versão no banco de dados na tabela versaodb (que eu criei para este proposito). Como vi algo mais simples na revista, então fiquei pensando em uma forma mais pratica (alias na verdade não quero ficar dependendo de um componente de conexão, quero algo mais generico, ja que estou abandonando o zeos)
Bom vou ver este exemplo que vc postou aqui...
Muito obrigado pela ajuda amigo. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
rafmattos Colaborador
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
|
Voltar ao Topo |
|
|
rafmattos Colaborador
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Ter Mai 03, 2011 11:41 am Assunto: |
|
|
se vc for fazer o teste, vc colocar o script completo(tabelas,trigger,tudo...) para ele fazer a comparação e verificar o que tem diferente |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Mai 03, 2011 11:48 am Assunto: |
|
|
rafmattos escreveu: |
se vc for fazer o teste, vc colocar o script completo(tabelas,trigger,tudo...) para ele fazer a comparação e verificar o que tem diferente | Olá Ralf... então é vc o idealizador da DLL... Então esta versão esta funcionando.
Mais é tão rapido que nem vi o que fez
Para eu testar basta então gerar um script do metadata do banco que eu criei e setar com o banco a ser alterado ? Devo substituir o arquivo sql e o fdb, modificar o ini e rodar, é só isso?
Se for amigo, vou testar a noite, pq não usamos firebird aqui na empresa e não tenho como projetar.
Obrigado. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
rafmattos Colaborador
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Ter Mai 03, 2011 11:55 am Assunto: |
|
|
adriano_servitec escreveu: |
Para eu testar basta então gerar um script do metadata do banco que eu criei e setar com o banco a ser alterado ? Devo substituir o arquivo sql e o fdb, modificar o ini e rodar, é só isso?
Se for amigo, vou testar a noite, pq não usamos firebird aqui na empresa e não tenho como projetar.
Obrigado. |
ele é rapido pq essa demo eu coloquei só tem 1 tabela.
--------------------------
isso gera o metadata completo do seu banco e depois passa na chamada da procedure.
AtualizaBanco(PChar('SYSDBA'),PChar('masterkey'),
PChar('SEUBANCO.FDB'),PChar('SeuScript.sql')); |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Mai 03, 2011 12:02 pm Assunto: |
|
|
rafmattos escreveu: | adriano_servitec escreveu: |
Para eu testar basta então gerar um script do metadata do banco que eu criei e setar com o banco a ser alterado ? Devo substituir o arquivo sql e o fdb, modificar o ini e rodar, é só isso?
Se for amigo, vou testar a noite, pq não usamos firebird aqui na empresa e não tenho como projetar.
Obrigado. |
ele é rapido pq essa demo eu coloquei só tem 1 tabela.
--------------------------
isso gera o metadata completo do seu banco e depois passa na chamada da procedure.
AtualizaBanco(PChar('SYSDBA'),PChar('masterkey'),
PChar('SEUBANCO.FDB'),PChar('SeuScript.sql')); | Blz... Vou testar a noite...
Muito obrigado amigo.
Obs: O Joemil fiz um convite, se vc quiser compartilhar com ele... E abrir seu codigo para a comunidade que assina a revista... _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
|
Voltar ao Topo |
|
|
rafmattos Colaborador
Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Ter Mai 03, 2011 2:48 pm Assunto: |
|
|
joemil escreveu: |
se alg souber os comandos para pegar informacoes do BD firebird, e quiser escrever um artigo para a revista em conjunto, ta feito o convite.
|
RELACAO DE DOMAIN
select F.*,
(Select C.Rdb$Character_Set_Name from Rdb$Character_Sets C
where C.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) RDB$CHARACTER_SET_NAME,
(Select C1.Rdb$Collation_Name from Rdb$Collations C1
where C1.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID and
C1.Rdb$Collation_ID=F.Rdb$Collation_ID) RDB$COLLATION_NAME
from RDB$fields F
where (F.rdb$system_flag<>1 or F.rdb$system_flag is null) and (F.rdb$field_name not like 'RDB$%')
order by F.rdb$field_name
RELACAO DE FUNCOES
select * from rdb$Functions
where (rdb$system_flag<>1 or rdb$system_flag is null)
order by Rdb$Function_Name
RELAÇÕES DE FK
Select C.rdb$constraint_name,
C.rdb$constraint_type,
C.rdb$relation_name FK_RELATION_NAME,
C.rdb$index_name FK_INDEX_NAME,
I2.rdb$relation_name PK_RELATION_NAME,
I2.RDB$Index_Name PK_INDEX_NAME,
I1.RDB$Index_Type FK_INDEX_TYPE,
I2.RDB$Index_Type PK_INDEX_TYPE
from Rdb$Relation_Constraints C, rdb$ref_constraints R,
rdb$indices I1, rdb$indices I2
where C.Rdb$Constraint_Type='FOREIGN KEY'
and I1.Rdb$index_name = C.Rdb$index_name
and I2.Rdb$index_name=I1.Rdb$foreign_key
and R.rdb$constraint_name=C.rdb$constraint_name
and C.rdb$constraint_name not like 'IBE$%'
TABELAS
select rdb$Relation_Name, Rdb$Description, rdb$External_File,
rdb$System_Flag, rdb$View_BLR
from rdb$relations
where (rdb$system_flag <> 1 or Rdb$System_Flag is null)
and Rdb$View_BLR is null
order by rdb$relation_name
Order by C.rdb$relation_name, C.rdb$constraint_name;
VIEW
select R.Rdb$Relation_Name, R.Rdb$View_Source, R.Rdb$Description
from Rdb$Relations R
where (R.Rdb$System_Flag <> 1 or R.Rdb$System_Flag is Null)
and not R.Rdb$View_BLR is null and R.Rdb$Flags = 1
Order by R.Rdb$Relation_Name
LISTA DE PROCEDURE COM CODIGO FONTE
Select rdb$Procedure_Name, rdb$System_Flag, rdb$Description,
rdb$Procedure_Source, rdb$Procedure_BLR
from rdb$procedures
where (Rdb$System_Flag <> 1 or Rdb$System_Flag is Null)
and rdb$procedure_name not like 'IBE$%'
order by rdb$procedure_name
TRIGGER COM CODIGO FONTE
select T.RDB$TRIGGER_NAME, T.RDB$RELATION_NAME, T.RDB$TRIGGER_SOURCE, T.RDB$DESCRIPTION,
T.RDB$TRIGGER_TYPE, T.RDB$TRIGGER_BLR, T.RDB$TRIGGER_SEQUENCE, T.RDB$TRIGGER_INACTIVE,
T.RDB$SYSTEM_FLAG
from rdb$triggers T
join rdb$relations R on R.rdb$relation_name = T.rdb$relation_name
where (R.rdb$system_flag <> 1 or R.rdb$system_flag is Null)
and NOT EXISTS (SELECT * FROM RDB$CHECK_CONSTRAINTS CHK WHERE
T.RDB$TRIGGER_NAME = CHK.RDB$TRIGGER_NAME)
and not (R.rdb$view_blr is not null and T.rdb$trigger_name like 'CHECK_%' and T.rdb$trigger_source is null)
order by T.rdb$trigger_name
LISTA DE COMPOS DA TABELA COM DETALHE
Select R.Rdb$Field_Name, R.rdb$field_position,
R.Rdb$default_Value,R.Rdb$default_source,
R.Rdb$null_flag, R.Rdb$collation_ID,
F.Rdb$Character_Set_ID F_Character_Set_ID,
R.Rdb$DESCRIPTION,
F.Rdb$field_name F_Fld_Name,
F.Rdb$field_type,
F.Rdb$field_length F_Fld_length,
F.Rdb$character_length F_chr_length,
F.Rdb$field_sub_type F_Fld_sub_type,
F.Rdb$Segment_Length F_Segment_Length,
F.Rdb$VALIDATION_Source F_VALIDATION_SOURCE,
F.Rdb$default_Value F_DEFAULT_VALUE,
F.Rdb$default_Source F_DEFAULT_SOURCE,
F.Rdb$COMPUTED_Source,
F.Rdb$Field_Scale F_Field_Scale,
F.Rdb$Dimensions,
(Select C1.Rdb$Collation_Name from Rdb$Collations C1
where C1.Rdb$Collation_ID=R.Rdb$Collation_ID
and C1.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) Rdb$Collation_Name,
(Select C2.Rdb$Character_Set_Name from Rdb$Character_Sets C2
where C2.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) Rdb$Character_Set_Name
from rdb$Relation_Fields R, RDB$FIELDS F
where R.Rdb$Relation_Name = :NAME and F.rdb$field_name=R.Rdb$field_source
order by R.rdb$field_position, R.rdb$field_name |
|
Voltar ao Topo |
|
|
joemil Moderador
Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9098 Localização: Sinop-MT
|
Enviada: Ter Mai 03, 2011 4:20 pm Assunto: |
|
|
rafmattos escreveu: |
RELACAO DE DOMAIN
select F.*,
(Select C.Rdb$Character_Set_Name from Rdb$Character_Sets C
where C.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) RDB$CHARACTER_SET_NAME,
(Select C1.Rdb$Collation_Name from Rdb$Collations C1
where C1.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID and
C1.Rdb$Collation_ID=F.Rdb$Collation_ID) RDB$COLLATION_NAME
from RDB$fields F
where (F.rdb$system_flag<>1 or F.rdb$system_flag is null) and (F.rdb$field_name not like 'RDB$%')
order by F.rdb$field_name
RELACAO DE FUNCOES
select * from rdb$Functions
where (rdb$system_flag<>1 or rdb$system_flag is null)
order by Rdb$Function_Name
RELAÇÕES DE FK
Select C.rdb$constraint_name,
C.rdb$constraint_type,
C.rdb$relation_name FK_RELATION_NAME,
C.rdb$index_name FK_INDEX_NAME,
I2.rdb$relation_name PK_RELATION_NAME,
I2.RDB$Index_Name PK_INDEX_NAME,
I1.RDB$Index_Type FK_INDEX_TYPE,
I2.RDB$Index_Type PK_INDEX_TYPE
from Rdb$Relation_Constraints C, rdb$ref_constraints R,
rdb$indices I1, rdb$indices I2
where C.Rdb$Constraint_Type='FOREIGN KEY'
and I1.Rdb$index_name = C.Rdb$index_name
and I2.Rdb$index_name=I1.Rdb$foreign_key
and R.rdb$constraint_name=C.rdb$constraint_name
and C.rdb$constraint_name not like 'IBE$%'
TABELAS
select rdb$Relation_Name, Rdb$Description, rdb$External_File,
rdb$System_Flag, rdb$View_BLR
from rdb$relations
where (rdb$system_flag <> 1 or Rdb$System_Flag is null)
and Rdb$View_BLR is null
order by rdb$relation_name
Order by C.rdb$relation_name, C.rdb$constraint_name;
VIEW
select R.Rdb$Relation_Name, R.Rdb$View_Source, R.Rdb$Description
from Rdb$Relations R
where (R.Rdb$System_Flag <> 1 or R.Rdb$System_Flag is Null)
and not R.Rdb$View_BLR is null and R.Rdb$Flags = 1
Order by R.Rdb$Relation_Name
LISTA DE PROCEDURE COM CODIGO FONTE
Select rdb$Procedure_Name, rdb$System_Flag, rdb$Description,
rdb$Procedure_Source, rdb$Procedure_BLR
from rdb$procedures
where (Rdb$System_Flag <> 1 or Rdb$System_Flag is Null)
and rdb$procedure_name not like 'IBE$%'
order by rdb$procedure_name
TRIGGER COM CODIGO FONTE
select T.RDB$TRIGGER_NAME, T.RDB$RELATION_NAME, T.RDB$TRIGGER_SOURCE, T.RDB$DESCRIPTION,
T.RDB$TRIGGER_TYPE, T.RDB$TRIGGER_BLR, T.RDB$TRIGGER_SEQUENCE, T.RDB$TRIGGER_INACTIVE,
T.RDB$SYSTEM_FLAG
from rdb$triggers T
join rdb$relations R on R.rdb$relation_name = T.rdb$relation_name
where (R.rdb$system_flag <> 1 or R.rdb$system_flag is Null)
and NOT EXISTS (SELECT * FROM RDB$CHECK_CONSTRAINTS CHK WHERE
T.RDB$TRIGGER_NAME = CHK.RDB$TRIGGER_NAME)
and not (R.rdb$view_blr is not null and T.rdb$trigger_name like 'CHECK_%' and T.rdb$trigger_source is null)
order by T.rdb$trigger_name
LISTA DE COMPOS DA TABELA COM DETALHE
Select R.Rdb$Field_Name, R.rdb$field_position,
R.Rdb$default_Value,R.Rdb$default_source,
R.Rdb$null_flag, R.Rdb$collation_ID,
F.Rdb$Character_Set_ID F_Character_Set_ID,
R.Rdb$DESCRIPTION,
F.Rdb$field_name F_Fld_Name,
F.Rdb$field_type,
F.Rdb$field_length F_Fld_length,
F.Rdb$character_length F_chr_length,
F.Rdb$field_sub_type F_Fld_sub_type,
F.Rdb$Segment_Length F_Segment_Length,
F.Rdb$VALIDATION_Source F_VALIDATION_SOURCE,
F.Rdb$default_Value F_DEFAULT_VALUE,
F.Rdb$default_Source F_DEFAULT_SOURCE,
F.Rdb$COMPUTED_Source,
F.Rdb$Field_Scale F_Field_Scale,
F.Rdb$Dimensions,
(Select C1.Rdb$Collation_Name from Rdb$Collations C1
where C1.Rdb$Collation_ID=R.Rdb$Collation_ID
and C1.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) Rdb$Collation_Name,
(Select C2.Rdb$Character_Set_Name from Rdb$Character_Sets C2
where C2.Rdb$Character_Set_ID=F.Rdb$Character_Set_ID) Rdb$Character_Set_Name
from rdb$Relation_Fields R, RDB$FIELDS F
where R.Rdb$Relation_Name = :NAME and F.rdb$field_name=R.Rdb$field_source
order by R.rdb$field_position, R.rdb$field_name |
TUDO ISSO???? rsrsrs. vou dar uma analisada e voltamos a conversar.
mas q no MySQL é mais facil, isso é hehehe _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
|
leonardodealice Novato
Registrado: Quarta-Feira, 18 de Dezembro de 2013 Mensagens: 4
|
Enviada: Qua Dez 18, 2013 2:30 pm Assunto: |
|
|
Boa tarde pessoal.
Gostei muito do assunto desse post!
Mas o link não está mais disponível...
Alguém pode me ajudar?
Obrigado! |
|
Voltar ao Topo |
|
|
oneshotbr Colaborador
Registrado: Quarta-Feira, 6 de Mai de 2009 Mensagens: 1948 Localização: Taubaté - SP
|
Enviada: Sex Dez 20, 2013 10:04 am Assunto: |
|
|
Citação: | Boa tarde pessoal.
Gostei muito do assunto desse post! Very Happy
Mas o link não está mais disponível... Sad
Alguém pode me ajudar?
Obrigado! |
Bom dia,
Esse post é bem antigo, e eu estou precisando também de uma solução como essa DLL fazia!
Se alguém souber de algo, por enquanto eu estou utilizando o ibexpert -> tools -> database comparer e faço a atualização manualmente. _________________ AMD Phenom II X4 960T 3.00 GHz - 8 GB DDR III - HD 1000 GB SATA - GeForce GTX 650 TI GDDR 5 - Monitor 21,5" Full HD - Kubuntu 14.04 + Windows 7 Professional x64. |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|