Удалить все таблицы в 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
вызов первого метода.
Я думаю, что большинство поставщиков БД не разрешают DROP TABLE * (или аналогичный).
Я думаю, что лучшим способом было бы показать таблицы, а затем пройти через каждое удаление в цикле через resultset.
HTH.
JDBC позволяет решить вашу задачу агностическим способом в базе данных:
- открыть соединение
- захватить DatabaseMetaData
- используйте его, чтобы перечислить все таблицы в вашей базе данных JavaDoc
- повторите над результирующим набором и запустите таблицу DROP для каждой таблицы
- необходимо создать схему и имя таблицы из системного каталога Derby DB.
- заказать все таблицы по отношению.
- создать инструкцию java для drop all tables
- используйте метод autoCommit () и установите для этого метода значение false. для ручных транзакций фиксации или отката при получении ошибок.
- запустите процесс 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/
подключиться к базе данных.
разверните узел таблицы.
выберите таблицы, которые вы хотите удалить.
щелкните правой кнопкой мыши и выберите -> Скрипты -> удалить скрипты
запустите сгенерированные запросы
вы даже можете выбрать удалить записи, чтобы очистить выбранные таблицы.