문제

JDBC를 사용하여 Apache Derby DB의 스키마의 모든 테이블을 어떻게 삭제합니까?

도움이 되었습니까?

해결책

이를 수행하는 실제 코드의 경우 확인하십시오 CleanDatabasetestSetUp.java Derby Distribution의 Derby Test Suite 섹션에서.

다른 팁

감사합니다 블로그:

1 단계:

SQL 문을 실행하지만 아래의 두 가지 발생에서 스키마 이름 '앱'을 스키마 이름으로 바꾸는 것을 잊지 마십시오.

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

첫 번째 방법을 호출합니다.

더비 최신 문서

대부분의 DB 제공 업체는 드롭 테이블 * (또는 이와 유사한)을 허용하지 않는다고 생각합니다.

가장 좋은 방법은 테이블을 표시 한 다음 결과 세트를 통해 루프에서 각 삭제를 거치는 것입니다.

HTH.

JDBC는 데이터베이스 불가지론적인 방식으로 작업을 해결할 수 있습니다.

  1. 연결을 엽니 다
  2. DataBasemetAdata를 잡습니다
  3. 데이터베이스에 모든 테이블을 나열하는 데 사용하십시오 Javadoc
  4. 결과 집합을 반복하고 각 테이블의 드롭 테이블을 발사하십시오.
  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
;

간단한 솔루션은 마우스 오른쪽 버튼을 클릭 한 다음 데이터베이스가 포함 된 폴더를 삭제하고 다시 연결하는 것입니다.

Squirrel SQL을 다운로드하십시오 http://squirrel-sql.sourceforge.net/

데이터베이스에 연결하십시오.

테이블 노드를 확장하십시오.

떨어 뜨릴 테이블을 선택하십시오.

마우스 오른쪽 버튼을 클릭하고 선택 -> 스크립트 -> 테이블 스크립트 드롭.

생성 된 쿼리를 실행하십시오

선택한 테이블을 비우기 위해 레코드 삭제를 선택할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top