Удалить все таблицы в Derby DB

Как удалить все таблицы в схеме на Apache Derby DB с помощью JDBC?

10 ответов


для фактического кода, который делает это, проверьте CleanDatabaseTestSetup.java в разделе Derby Test suite дистрибутива Derby.


благодарности блог:

Шаг 1:

запустите инструкцию SQL, но не забудьте заменить имя схемы "APP" на ваше имя схемы в 2 вхождениях ниже:

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

Шаг 2:

в результате выполнения представляет собой набор инструкций SQL, скопировать их в Редактор SQL, выполните их, затем ограничения и таблицы.


сделайте небольшой метод в java, в котором вы выполняете

DROP TABLE [tablename]

tablename передается параметром.

и другой метод, в котором вы цикл над набором записей, сформированным запросом

SELECT tablename FROM SYSTABLES

вызов первого метода.

Derby последняя документация


Я думаю, что большинство поставщиков БД не разрешают DROP TABLE * (или аналогичный).

Я думаю, что лучшим способом было бы показать таблицы, а затем пройти через каждое удаление в цикле через resultset.

HTH.


JDBC позволяет решить вашу задачу агностическим способом в базе данных:

  1. открыть соединение
  2. захватить DatabaseMetaData
  3. используйте его, чтобы перечислить все таблицы в вашей базе данных JavaDoc
  4. повторите над результирующим набором и запустите таблицу DROP для каждой таблицы

  1. необходимо создать схему и имя таблицы из системного каталога Derby DB.
  2. заказать все таблицы по отношению.
  3. создать инструкцию java для drop all tables
  4. используйте метод autoCommit () и установите для этого метода значение false. для ручных транзакций фиксации или отката при получении ошибок.
  5. запустите процесс java. удача.

более простым решением является использование JDBC для запуска "drop database foo", а затем "create database foo". Однако это приведет к удалению всех объектов в БД (т. е. не только таблиц).


Если вы работаете из командной строки, а не через JDBC, это должно вам начать работу.

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

простое решение - щелкнуть правой кнопкой мыши - > отключить, затем удалить папку, содержащую вашу базу данных, и снова подключить ее.


скачать белка SQL из http://squirrel-sql.sourceforge.net/

подключиться к базе данных.

разверните узел таблицы.

выберите таблицы, которые вы хотите удалить.

щелкните правой кнопкой мыши и выберите -> Скрипты -> удалить скрипты

запустите сгенерированные запросы

вы даже можете выбрать удалить записи, чтобы очистить выбранные таблицы.