2014-06-24 7 views
5

मैं Hsqldb डेटाबेस में नया हूं। मैं जावा कोड के माध्यम से बैकअप लेने और Hsqldb डेटाबेस को पुनर्स्थापित करने के बारे में जानना चाहता हूं।जावा कोड में Hsqldb डेटाबेस का बैकअप और पुनर्स्थापित

+0

क्या आप बस डीबी फ़ाइल की प्रतिलिपि नहीं बना सकते? – MadProgrammer

+1

कृपया {देखें] (http://www.hsqldb.org/doc/2.0/guide/management-chapt.html#mtc_backup) – SparkOn

उत्तर

3

BACKUP DATABASE TO कमांड का उपयोग करें।

यहाँ प्रलेखन के लिए एक लिंक है:

HSQLDB System Management Documentation

मैं इस परीक्षण नहीं किया है, लेकिन मुझे लगता है यह की तर्ज पर कुछ है: आप करना चाहते हैं

String backup = "BACKUP DATABASE TO " + "'" + filePath + "' BLOCKING"; 

PreparedStatement preparedStatement = connection.prepareStatement(backup); 

preparedStatement.execute(); 

इसे पाठ्यक्रम के एक प्रयास-पकड़ ब्लॉक में लपेटें।

जहां तक ​​डीबी को बहाल करने के लिए, मुझे लगता है कि आपको ऐसा करना होगा जबकि डेटाबेस DbBackupMain एप्लिकेशन का उपयोग कर ऑफलाइन है। तो अगर आप आदेश पंक्ति पर यह आदेश जारी करेंगे:

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir 
+0

'डीबी बैकअपमेन' का उपयोग करके, क्या मैं ** टार्डिर में स्थानीय पथ नाम निर्दिष्ट करने में सक्षम हूं * * प्लेसहोल्डर? मैं इसे एक विशिष्ट स्थान पर चाहता हूं। मैंने डी: \ डेटाबेस \ hsqldb \ path में ** एचएसक्यूएल ** डीबी निकाला और मेरा डेटाबेस डी: \ डेटाबेस \ HSQLDatabase \ path में है। बैक अप बनाने के लिए मैं इसे कैसे निर्दिष्ट कर सकता हूं? डी में: \ डेटाबेस \ बैकअप \ यह पथ? 'प्रीपेडस्टेटमेंट' निष्पादन बैक-अप का उपयोग कर – Bhat

+0

की सहायता करें। लेकिन यह निर्दिष्ट स्थान पथ में कई प्रतियां बना रहा है। मैं अस्तित्व में अद्यतन/सही करने के लिए कैसे संशोधित करूं? ताकि मैं बैक-अप फ़ाइल – Bhat

2

प्रत्येक HyperSQL डेटाबेस एक सूची कहा जाता है। डेटा कैसे संग्रहीत किया जाता है इस पर निर्भर करता है कि तीन प्रकार के कैटलॉग हैं।

सूची डेटा के प्रकार:

मेम: राम में पूरी तरह से संग्रहीत - JVM प्रक्रिया के जीवन से परे किसी भी दृढ़ता के बिना

फ़ाइल: फाइल सिस्टम फ़ाइलों

रेस में संग्रहीत: जावा संसाधन में संग्रहीत, जैसे कि जार और हमेशा पढ़ने के लिए केवल

चल रहे कैटलॉग का बैक अप लेने के लिए, एक जेडीबीसी कनेक्शन प्राप्त करें और SQL में बैकअप डेटाबेस आदेश जारी करें। अपने सबसे सरल रूप में, नीचे दिया गया कमांड प्रारूप डेटाबेस को बैकअप डेटाबेस के रूप में एक .tar.gz फ़ाइल के रूप में बैकअप करेगा।

BACKUP DATABASE TO <directory name> BLOCKING [ AS FILES ] 

निर्देशिका का नाम एक निर्देशिका के रूप में यह भेद करने के लिए एक स्लैश के साथ समाप्त होना चाहिए, और पूरी स्ट्रिंग तो जैसे एकल उद्धरण में होना चाहिए: 'subdir/nesteddir /'।

ऑफ़लाइन कैटलॉग का बैक अप लेने के लिए, सूची बंद स्थिति में होनी चाहिए। आप जावा कमांड जैसे

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --save tardir/backup.tar dbdir/dbname 

चलाएंगे। इस उदाहरण में, डेटाबेस को dbname नाम दिया गया है और dbdir निर्देशिका में है। बैकअप को tardir निर्देशिका में backup.tar नामक फ़ाइल में सहेजा जाता है।

जहां tardir/backup.tar आपके फ़ाइल सिस्टम में बनाए जाने के लिए * .tar या * .tar.gz फ़ाइल का एक फ़ाइल पथ है, और dbdir/dbname कैटलॉग फ़ाइल बेस नाम का फ़ाइल पथ है।

आप अपने ऑपरेटिंग सिस्टम कमांड लाइन पर पर डीबी बैक अप का उपयोग बैकअप से एक कैटलॉग को पुनर्स्थापित करें।

java -cp hsqldb.jar org.hsqldb.lib.tar.DbBackupMain --extract tardir/backup.tar dbdir 

जहां tardir/backup.tar को * .tar या * .tar.gz फ़ाइल पढ़ने के लिए फ़ाइल पथ है, और dbdir में सूची फ़ाइलों को अलग करने के लिए लक्ष्य निर्देशिका है। ध्यान दें कि dbdir कैटलॉग फ़ाइल बेस नाम के बिना, एक निर्देशिका पथ निर्दिष्ट करता है। फाइलें टैर फ़ाइल में संग्रहीत नामों के साथ बनाई जाएंगी। अधिक जानकारी के refer

+0

की एक प्रतियां वास्तव में अच्छा प्रबंधित कर सकूं !!! – Xelian

0

तो जावा + वसंत + JdbcTemplate

बैकअप (ऑन लाइन) में के लिए:

@Autowired 
public JdbcTemplate jdbcTemplate; 

public void mainBackupAndRestore() throws IOException { 
    ... 
    jdbcTemplate.execute("BACKUP DATABASE TO '" + sourceFile.getAbsolutePath() + "' BLOCKING"); 
} 

यह .properties, एक करने के लिए .scripts और .lobs फ़ाइल की बचत होगी स्रोत में tarFile.getAbsolutePath()।

पुनर्स्थापित करें:

DbBackupMain.main(new String[] { "--extract", baseDir.getAbsolutePath(), 
        System.getProperty("user.home") + "/restoreFolder" }); 

यह() baseDir.getAbsolutePath से फाइल मिल जाएगा और उन्हें userHome/restoreFolder में डाल तुम कहाँ देख सकते हैं कि सभी को बहाल ठीक है जाएगा। लॉब्स में लॉब/ब्लॉब डेटा होता है, स्क्रिप्ट में निष्पादित प्रश्न होते हैं।

enter image description here

संबंधित मुद्दे