Вопрос

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

Это было полезно?

Решение

Для реального кода, который делает это, проверьте CleanDatabaseTestSetup.java в разделе набора тестов Derby дистрибутива 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 * (или аналогичный).

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

ХТХ.

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

  1. Открыть соединение
  2. Возьмите метаданные базы данных
  3. Используйте его для вывода списка всех таблиц в вашей базе данных. JavaDoc
  4. Перебрать набор результатов и запустить DROP TABLE для каждой таблицы.
<Ол>
  • вы должны сгенерировать схему и имя таблицы из системного каталога Derby DB.
  • Упорядочить все таблицы по соотношению.
  • Создать оператор Java для удаления всех таблиц
  • Используйте метод autoCommit () и установите для этого метода значение false. для транзакций ручной фиксации или отката при получении ошибок.
  • Запустите процесс Java. Удачи.
  • Более простое решение - использовать JDBC для запуска " drop database foo " затем " создать базу данных foo " ;. Однако это приведет к удалению всех объектов в БД (т. Е. Не только таблиц).

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

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

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

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

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

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top