Domanda

Come posso eliminare tutte le tabelle nello schema su Apache Derby DB usando JDBC?

È stato utile?

Soluzione

Per il codice effettivo che fa questo, controlla CleanDatabaseTestSetup.java nella sezione suite di test Derby della distribuzione Derby.

Altri suggerimenti

Grazie a il blog :

Passaggio 1:

Esegui l'istruzione SQL, ma non dimenticare di sostituire il nome dello schema 'APP' con il tuo nome dello schema nelle 2 occorrenze seguenti:

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';

Passaggio 2:

Il risultato dell'esecuzione sopra è un insieme di istruzioni SQL, copiarle nell'editor SQL, eseguirle, quindi i vincoli e le tabelle vengono eliminati.

Esegui un piccolo metodo in Java in cui esegui un

DROP TABLE [tablename]

tablename viene passato per parametro.

E un altro metodo in cui si esegue il ciclo su un set di record formato dalla query

SELECT tablename FROM SYSTABLES

chiamando il primo metodo.

Ultima documentazione di Derby

Penso che la maggior parte dei provider di database non permetta DROP TABLE * (o simile).

Penso che il modo migliore sarebbe quello di MOSTRARE TABELLE e poi passare attraverso ogni eliminazione in un ciclo tramite un set di risultati.

HTH.

JDBC ti consente di risolvere il tuo compito in modo agnostico nel database:

  1. Apri la connessione
  2. Prendi il DatabaseMetaData
  3. Usalo per elencare tutte le tabelle nel tuo database JavaDoc
  4. Scorrere sul gruppo di risultati e attivare la DROP TABLE per ogni tabella
  1. è necessario generare lo schema e il nome della tabella dal catalogo di sistema del Derby DB.
  2. Ordina tutte le tabelle in base alla relazione.
  3. Genera istruzione java per eliminare tutte le tabelle
  4. Usa il metodo autoCommit () e imposta questo metodo su false. per operazioni di commit o rollback manuali in caso di errori.
  5. Esegui il tuo processo Java. Buona fortuna.

Una soluzione più semplice è utilizzare JDBC per eseguire "drop database foo" quindi "crea database foo". Tuttavia, ciò causerà l'eliminazione di tutti gli oggetti nel DB (ovvero non solo le tabelle).

Se stai lavorando dal prompt dei comandi piuttosto che tramite JDBC, questo dovrebbe iniziare.

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

Una soluzione semplice è fare clic con il tasto destro - > disconnetti quindi elimina la cartella contenente il tuo database e riconnettilo.

Scarica Squirrel SQL da http://squirrel-sql.sourceforge.net/

Connetti al database.

Espandi il nodo TABELLA.

Seleziona le tabelle che vuoi eliminare.

Fai clic destro e seleziona - > Script - > Elimina gli script delle tabelle

Esegui le query generate

Puoi anche selezionare Elimina record per svuotare le tabelle selezionate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top