質問

JDBCを使用してApache Derby DBのスキーマ内のすべてのテーブルを削除するにはどうすればよいですか

役に立ちましたか?

解決

これを行う実際のコードについては、 CleanDatabaseTestSetup.java

他のヒント

ブログ

ステップ1:

SQLステートメントを実行しますが、以下の2つのオカレンスでスキーマ名「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エディターにコピーして実行し、制約とテーブルが削除されます。

Javaで実行する小さなメソッドを実行します

DROP TABLE [tablename]

tablename はパラメーターによって渡されます。

そして、クエリによって形成されたレコードセットをループする別の方法

SELECT tablename FROM SYSTABLES

最初のメソッドを呼び出す。

Derbyの最新ドキュメント

ほとんどのdbプロバイダーはDROP TABLE *(または同様の)を許可していません。

最善の方法は、テーブルを表示してから、結果セットを介してループで各削除を実行することだと思います。

HTH。

JDBCを使用すると、データベースに依存しない方法でタスクを解決できます。

  1. 接続を開く
  2. DatabaseMetaDataを取得する
  3. これを使用して、データベース内のすべてのテーブルを一覧表示します JavaDoc
  4. 結果セットを反復処理し、各テーブルのDROP TABLEを起動します
  1. Derby DBシステムカタログからスキーマとテーブル名を生成する必要があります。
  2. すべてのテーブルをリレーション順に並べます。
  3. すべてのテーブルを削除するためのjavaステートメントを生成する
  4. autoCommit()メソッドを使用し、このメソッドをfalseに設定します。エラーが発生した場合のトランザクションの手動コミットまたはロールバック用。
  5. Javaプロセスを実行します。 幸運。

より簡単な解決策は、JDBCを使用して" drop database foo"を実行することです。次に、「データベースfooを作成」します。ただし、これにより、DB内のすべてのオブジェクトが削除されます(つまり、テーブルだけではありません)。

JDBCではなくコマンドプロンプトから作業している場合は、これで開始できます。

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

簡単な解決策は、右クリックすることです->データベースを含むフォルダーを切断してから削除し、再接続します。

http://squirrel-sql.sourceforge.net/

データベースに接続します。

TABLEノードを展開します。

ドロップするテーブルを選択します。

右クリックして選択->スクリプト->テーブルスクリプトの削除

生成されたクエリを実行します

レコードの削除を選択して、選択したテーブルを空にすることもできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top