احذف جميع الجداول في Derby DB
سؤال
كيف يمكنني حذف جميع الجداول الموجودة في المخطط على Apache Derby DB باستخدام JDBC؟
المحلول
لالرمز الفعلي أن يفعل ذلك، تحقق <لأ href = "http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/CleanDatabaseTestSetup. جافا؟ عرض = العلامات "يختلط =" نوفولو noreferrer "> CleanDatabaseTestSetup.java في قسم اختبار جناح دربي توزيع ديربي.
نصائح أخرى
وبفضل من المقرر أن على بلوق أ >:
الخطوة 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، تنفيذها، ثم القيود ويتم إسقاط الجداول.
هل طريقة قليلا في جافا الذي قمت تنفيذ
DROP TABLE [tablename]
ويتم تمرير tablename
التي كتبها المعلمة.
وطريقة أخرى في الذي حلقة على مجموعة السجلات التي شكلتها الاستعلام
SELECT tablename FROM SYSTABLES
واستدعاء الأسلوب الأول.
وأعتقد مقدمي الأكثر ديسيبل لا تسمح DROP TABLE * (أو ما شابه).
وأعتقد أن أفضل طريقة ليكون إظهار جدول ثم تذهب من خلال كل حذف في حلقة عبر resultset و.
وHTH.
يسمح لك JDBC بحل مهمتك بطريقة غير محددة لقاعدة البيانات:
- افتح الاتصال
- احصل على DatabaseMetaData
- استخدامه لسرد كافة الجداول في قاعدة البيانات الخاصة بك JavaDoc
- قم بالتكرار على مجموعة النتائج ثم قم بتشغيل DROP TABLE لكل جدول
- يجب عليك إنشاء اسم المخطط والجدول من كتالوج نظام Derby DB.
- ترتيب كافة الجداول حسب العلاقة.
- إنشاء بيان جافا لإسقاط كافة الجداول
- استخدم طريقة autoCommit() واضبط هذه الطريقة على false.للالتزام اليدوي أو معاملات التراجع عند حدوث أخطاء.
- قم بتشغيل عملية جافا.حظ سعيد.
والحل الأبسط هو استخدام JDBC لتشغيل "فو قاعدة بيانات قطرة ماء" ثم "إنشاء قاعدة بيانات فو". ومع ذلك، وهذا سوف يسبب كافة الكائنات في DB المراد حذفه (أي ليس فقط الجداول).
إذا كنت تعمل من موجه الأوامر وليس من خلال 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/
والاتصال بقاعدة بيانات.
وتوسيع عقدة TABLE.
وحدد الجداول التي تريد إسقاط.
وانقر بزر الماوس الأيمن واختر -> مخطوطات -> إسقاط النصوص الجدول
وتشغيل الاستعلامات ولدت
ويمكنك حتى اختيار حذف السجلات لتفريغ الجداول المحددة.