Question

Comment puis-je supprimer toutes les tables du schéma sur Apache Derby DB en utilisant JDBC?

Était-ce utile?

La solution

Pour le code utilisé, vérifiez CleanDatabaseTestSetup.java dans la section Suite de tests Derby de la distribution Derby.

Autres conseils

Nous remercions le le blog :

Étape 1:

Exécutez l'instruction SQL, mais n'oubliez pas de remplacer le nom de schéma 'APP' par votre nom de schéma dans les 2 occurrences ci-dessous:

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

Étape 2:

Le résultat de l'exécution ci-dessus est un ensemble d'instructions SQL. Copiez-les dans l'éditeur SQL, exécutez-les, puis les contraintes et les tables sont supprimées.

Faites une petite méthode en Java dans laquelle vous exécutez un

DROP TABLE [tablename]

nom de table est passé par paramètre.

Et une autre méthode dans laquelle vous passez en boucle sur un jeu d'enregistrements formé par la requête

SELECT tablename FROM SYSTABLES

appelant la première méthode.

dernière documentation de Derby

Je pense que la plupart des fournisseurs de base de données n'autorisent pas DROP TABLE * (ou similaire).

Je pense que le meilleur moyen serait de MONTRER LES TABLEAUX et de passer ensuite à chaque suppression en boucle via un jeu de résultats.

HTH.

JDBC vous permet de résoudre votre tâche de manière indépendante de la base de données:

  1. Ouvrez la connexion
  2. Récupérez le DatabaseMetaData
  3. Utilisez-le pour répertorier toutes les tables de votre base de données JavaDoc
  4. Parcourez le jeu de résultats et lancez DROP TABLE pour chaque table
  1. vous devez générer le schéma et le nom de la table à partir du catalogue système Derby DB.
  2. Commandez toutes les tables par relation.
  3. Générer une instruction java pour supprimer toutes les tables
  4. Utilisez la méthode autoCommit () et définissez cette méthode sur false. pour les transactions de validation ou d'annulation manuelles lorsque des erreurs sont détectées.
  5. Exécutez votre processus java. Bonne chance.

Une solution plus simple consiste à utiliser JDBC pour exécuter "drop database foo "". puis "créer la base de données foo". Cependant, tous les objets de la base de données seront supprimés (pas uniquement des tables).

Si vous travaillez à partir de l'invite de commande plutôt que via JDBC, cela devrait vous aider à démarrer.

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

Une solution simple consiste à faire un clic droit - > déconnectez puis supprimez le dossier contenant votre base de données et reconnectez-le.

Téléchargez Squirrel SQL à partir de http://squirrel-sql.sourceforge.net/

Connectez-vous à la base de données.

Développez le noeud TABLE.

Sélectionnez les tables que vous souhaitez supprimer.

Faites un clic droit et sélectionnez - > Scripts - > Déposer des scripts de table

Exécuter les requêtes générées

Vous pouvez même sélectionner supprimer des enregistrements pour vider les tables sélectionnées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top