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

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

Ответы

Ответ 1

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

Ответ 2

Спасибо, что блог:

Шаг 1:

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

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, выполните их, затем ограничения и таблицы будут удалены.

Ответ 3

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

DROP TABLE [tablename]

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

И еще один метод, в котором вы перебираете набор записей, сформированный запросом

SELECT tablename FROM SYSTABLES

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

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

Ответ 4

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

Я думаю, что лучший способ - это SHOW TABLES, а затем пройти через каждое удаление в цикле с помощью набора результатов.

НТН.

Ответ 5

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

  • Откройте соединение
  • Возьмите DatabaseMetaData​​li >
  • Используйте его для отображения всех таблиц в вашей базе данных JavaDoc
  • Итерируйте по набору результатов и запустите DROP TABLE для каждой таблицы

Ответ 6

  • вы должны сгенерировать имя схемы и таблицы из системного каталога Derby DB.
  • Закажите все таблицы по отношениям.
  • Сгенерировать инструкцию Java для всех таблиц
  • Используйте метод autoCommit() и установите для этого метода значение false. для транзакций с ручным фиксацией или откатом при получении ошибок.
  • Запустите Java-процесс. Удачи.

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

Загрузите Squirrel SQL из http://squirrel-sql.sourceforge.net/

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

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

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

Щелкните правой кнопкой мыши и выберите → Скрипты → Сценарии распаковки таблицы

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

Вы даже можете выбрать удаление записей для удаления выбранных таблиц.