Удалить все таблицы в базе данных Derby - PullRequest
14 голосов
/ 05 октября 2008

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

Ответы [ 10 ]

7 голосов
/ 06 апреля 2014

Спасибо за блог :

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

5 голосов
/ 14 ноября 2009

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

3 голосов
/ 05 октября 2008

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

DROP TABLE [tablename]

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

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

SELECT tablename FROM SYSTABLES

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

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

1 голос
/ 05 октября 2008

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

Я думаю, что лучшим способом было бы ПОКАЗАТЬ ТАБЛИЦЫ, а затем проходить каждое удаление в цикле с помощью набора результатов.

НТН.

0 голосов
/ 17 ноября 2013

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

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

Разверните узел TABLE.

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

Щелкните правой кнопкой мыши и выберите -> Сценарии -> Скрипты удаления таблицы

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

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

0 голосов
/ 23 августа 2013

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

0 голосов
/ 18 декабря 2012

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

SELECT 'DROP TABLE ' || schemaname ||'.' || tablename || ';'
FROM SYS.SYSTABLES
INNER JOIN SYS.SYSSCHEMAS ON SYS.SYSTABLES.SCHEMAID = SYS.SYSSCHEMAS.SCHEMAID
;
0 голосов
/ 06 октября 2008

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

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

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

  1. Открыть соединение
  2. Захватить базу данныхMetaData
  3. Используйте его для отображения всех таблиц в вашей базе данных JavaDoc
  4. Перебрать набор результатов и запустить DROP TABLE для каждой таблицы
...