Ola;
Exite algum fonte java pronto que me desse a Estrutura do FDB de minha aplicacao ???
Preciso recuperar o SCHEMA compelto do Banco de Dados
Se alguem puder ajudar ??
Obrigado
Ola;
Exite algum fonte java pronto que me desse a Estrutura do FDB de minha aplicacao ???
Preciso recuperar o SCHEMA compelto do Banco de Dados
Se alguem puder ajudar ??
Obrigado
Olá,
Para Firebird
SELECT RRF.RDB$RELATION_NAME AS TABELA,
RRF.RDB$FIELD_NAME AS CAMPO,
CASE
RTP.RDB$TYPE_NAME
WHEN 'VARYING' THEN 'VARCHAR'
WHEN 'LONG' THEN 'INTEGER'
WHEN 'SHORT' THEN 'SMALLINT'
WHEN 'DOUBLE' THEN 'DOUBLE PRECISION'
WHEN 'FLOAT' THEN 'DOUBLE PRECISION'
WHEN 'INT64' THEN 'NUMERIC'
WHEN 'TEXT' THEN 'CHAR'
ELSE RTP.RDB$TYPE_NAME
END TIPO_CAMPO,
CASE
RTP.RDB$TYPE_NAME
WHEN 'VARYING' THEN RFL.RDB$FIELD_LENGTH
ELSE RFL.RDB$FIELD_PRECISION
END AS TAMANHO,
(RFL.RDB$FIELD_SCALE * -1) AS ESCALA,
IIF( EXISTS( SELECT FIRST 1 1
FROM RDB$RELATION_CONSTRAINTS RCN
INNER JOIN RDB$INDEX_SEGMENTS ISG ON RCN.RDB$INDEX_NAME = ISG.RDB$INDEX_NAME AND
ISG.RDB$FIELD_NAME = RRF.RDB$FIELD_NAME
WHERE RCN.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' AND
RCN.RDB$RELATION_NAME = RRF.RDB$RELATION_NAME),
'X',
'O') AS PRIMARY_KEY,
IIF( EXISTS( SELECT FIRST 1 1
FROM RDB$RELATION_CONSTRAINTS RCN
INNER JOIN RDB$CHECK_CONSTRAINTS CCN ON RCN.RDB$CONSTRAINT_NAME = CCN.RDB$CONSTRAINT_NAME AND
CCN.RDB$TRIGGER_NAME = RRF.RDB$FIELD_NAME
WHERE RCN.RDB$RELATION_NAME = RRF.RDB$RELATION_NAME ),
'X',
'O') AS NOT_NULL,
IIF( RRC.RDB$RELATION_NAME IS NOT NULL,
'X',
'O') AS FOREIGN_KEY,
RFC.RDB$CONST_NAME_UQ AS INDICE_CHAVE,
RRC.RDB$RELATION_NAME AS TABELA_CHAVE,
RIS2.RDB$FIELD_NAME AS CAMPO_CHAVE,
RFC.RDB$UPDATE_RULE AS REGRA_UPDATE,
RFC.RDB$DELETE_RULE AS REGRA_DELETE
FROM RDB$RELATION_FIELDS RRF
INNER JOIN RDB$FIELDS RFL ON RFL.RDB$FIELD_NAME = RRF.RDB$FIELD_SOURCE
INNER JOIN RDB$TYPES RTP ON RTP.RDB$TYPE = RFL.RDB$FIELD_TYPE AND
RTP.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
LEFT JOIN RDB$INDEX_SEGMENTS RIS ON RIS.RDB$FIELD_NAME = RRF.RDB$FIELD_NAME AND
EXISTS ( SELECT FIRST 1 1
FROM RDB$INDICES IND
INNER JOIN RDB$REF_CONSTRAINTS RFC ON RFC.RDB$CONSTRAINT_NAME = IND.RDB$INDEX_NAME
WHERE IND.RDB$INDEX_NAME = RIS.RDB$INDEX_NAME AND
IND.RDB$RELATION_NAME = RRF.RDB$RELATION_NAME)
LEFT JOIN RDB$REF_CONSTRAINTS RFC ON RFC.RDB$CONSTRAINT_NAME = RIS.RDB$INDEX_NAME
LEFT JOIN RDB$INDEX_SEGMENTS RIS2 ON RIS2.RDB$INDEX_NAME = RFC.RDB$CONST_NAME_UQ AND
RIS2.RDB$FIELD_POSITION = RIS.RDB$FIELD_POSITION
LEFT JOIN RDB$RELATION_CONSTRAINTS RRC ON RFC.RDB$CONST_NAME_UQ = RRC.RDB$CONSTRAINT_NAME AND
RRC.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
WHERE RRF.RDB$RELATION_NAME NOT STARTING WITH 'RDB$'
ORDER BY RRF.RDB$RELATION_NAME
Para MySql
SELECT ISC.TABLE_SCHEMA AS BANCO,
ISC.TABLE_NAME AS TABELA,
ISC.COLUMN_NAME AS CAMPO,
ISC.ORDINAL_POSITION AS ORDEM,
ISC.DATA_TYPE AS TIPO,
CASE
WHEN ISC.IS_NULLABLE = 'NO' THEN 'X'
ELSE ''
END AS NOT_NULL,
ISC.CHARACTER_MAXIMUM_LENGTH AS TAMANHO_MAX_STRING,
ISC.NUMERIC_PRECISION AS TAMANHO_DOUBLE,
ISC.NUMERIC_SCALE AS PRECISAO_DOUBLE,
CASE
WHEN ISC.COLUMN_KEY = 'PRI' THEN 'X'
ELSE ''
END AS CHAVE_PRIMARIA,
CASE
WHEN ISC.COLUMN_KEY = 'UNI' THEN 'X'
ELSE ''
END AS 'UNIQUE',
CASE
WHEN ISC.COLUMN_KEY = 'MUL' THEN 'X'
ELSE ''
END AS INDEXADA,
ISR.CONSTRAINT_NAME AS NOME_CHAVE_FILHA,
ISR.REFERENCED_TABLE_NAME AS TABELA_MAE,
ISR.UNIQUE_CONSTRAINT_NAME AS NOME_CHAVE_MAE,
ISK.REFERENCED_COLUMN_NAME AS NOME_CAMPO_MAE
FROM INFORMATION_SCHEMA.COLUMNS ISC
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ISK ON ISC.TABLE_SCHEMA = ISK.CONSTRAINT_SCHEMA AND
ISC.TABLE_NAME = ISK.TABLE_NAME AND
ISC.COLUMN_NAME = ISK.COLUMN_NAME
LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS ISR ON ISK.CONSTRAINT_NAME = ISR.CONSTRAINT_NAME AND
ISC.TABLE_SCHEMA = ISR.CONSTRAINT_SCHEMA AND
ISC.TABLE_NAME = ISR.TABLE_NAME
ORDER BY ISC.TABLE_SCHEMA, ISC.TABLE_NAME, ISC.ORDINAL_POSITION;
[/code]
Att.
Júnior Carvalho
Obrigado joseadolfojr