Pergunta

Como faço para excluir todas as tabelas no esquema em Apache Derby DB usando JDBC?

Foi útil?

Solução

Para código real que faz isso, verificação CleanDatabaseTestSetup.java na seção conjunto de testes Derby da distribuição Derby.

Outras dicas

Graças são devido a o blog :

Etapa 1:

Execute a instrução SQL, mas não se esqueça de substituir o nome do esquema 'APP' com o seu nome de esquema nos 2 ocorrências abaixo:

SELECT
'ALTER TABLE '||S.SCHEMANAME||'.'||T.TABLENAME||' DROP CONSTRAINT '||C.CONSTRAINTNAME||';'
FROM
    SYS.SYSCONSTRAINTS C,
    SYS.SYSSCHEMAS S,
    SYS.SYSTABLES T
WHERE
    C.SCHEMAID = S.SCHEMAID
AND
    C.TABLEID = T.TABLEID
AND
S.SCHEMANAME = 'APP'
UNION
SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';'
FROM SYS.SYSTABLES
INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID
where schemaname='APP';

Etapa 2:

O resultado da execução acima é um conjunto de instruções SQL, copiá-los para o editor SQL, executá-los, em seguida, as restrições e as mesas são descartados.

Faça um pouco método em java em que você executar um

DROP TABLE [tablename]

tablename é passado por parâmetro.

E outro método em que você loop sobre um conjunto de registros formado pela consulta

SELECT tablename FROM SYSTABLES

chamando o primeiro método.

Derby documentação mais recente

Eu acho que a maioria dos provedores db não permitem DROP TABLE * (ou similar).

Eu acho que a melhor maneira seria para mostrar tabelas e, em seguida, passar por cada exclusão em um loop através de um conjunto de resultados.

HTH.

JDBC permite que você resolva a sua tarefa de forma agnóstica de banco de dados:

  1. Abra a conexão
  2. Agarre a DatabaseMetaData
  3. Use-o para listar todas as tabelas no banco de dados JavaDoc
  4. iterar sobre o conjunto de resultados e fogo o DROP TABLE para cada tabela
  1. você deve gerar esquema e nome da tabela do catálogo do sistema Derby DB.
  2. Encomendar todas as tabelas de relação.
  3. Gerar declaração java para retirar todas as tabelas
  4. Use autoCommit () e definir este método para false. para o manual cometer ou transações de reversão quando tem erros.
  5. Executar você java processar. Boa sorte.

A solução mais simples é usar JDBC para executar "foo drop database" e depois "criar foo banco de dados". No entanto, isso fará com que todos os objetos no banco de dados para ser excluído (isto é, não apenas tabelas).

Se você estiver trabalhando a partir do prompt de comando, em vez de através de JDBC, este deve começar.

SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';'
FROM SYS.SYSTABLES
INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID
;

Uma solução simples é fazer clique direito -.> Desconexão exclua a pasta que contém o banco de dados e reconectá-lo

Descarregar Squirrel SQL de http://squirrel-sql.sourceforge.net/

Conectar ao banco de dados.

Expanda o nó da tabela.

Selecione as tabelas que você quer deixar cair.

Clique com o botão direito e selecione -> Scripts -> Queda scripts de mesa

Executar as consultas geradas

Você pode até escolher registros de exclusão para esvaziar as tabelas selecionadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top