2011-03-17 9 views
8

कक्षा GraphDatabaseService डेटाबेस को छोड़ने/साफ़ करने के लिए कोई तरीका प्रदान नहीं करता है। जावा के साथ वर्तमान एम्बेडेड डेटाबेस को छोड़ने/साफ़ करने के लिए इसका कोई अन्य माध्यम है?जावा के साथ neo4j एम्बेडेड डेटाबेस कैसे ड्रॉप करें?

उत्तर

6

बस GraphDatabaseService.shutdown() करें और इसे लौटने के बाद, डेटाबेस फ़ाइलों को हटाएं (this जैसे कोड का उपयोग करके)।

आप सभी नोड्स पर फिर से चलाने के लिए getAllNodes() का उपयोग भी कर सकते हैं, अपने रिश्तों और नोड्स को स्वयं हटा सकते हैं। शायद संदर्भ नोड को हटाने से बचें।

यदि आपका उपयोग केस परीक्षण कर रहा है, तो आप ImpermanentGraphDatabase का उपयोग कर सकते हैं, जो शट डाउन के बाद डेटाबेस को हटा देगा।

ImpermanentGraphDatabase का उपयोग करने के लिए neo4j-kernel परीक्षण जार/निर्भरता को अपनी परियोजना में जोड़ें। "Test.jar" on maven central के साथ समाप्त होने वाले नाम के साथ फ़ाइल की तलाश करें।

+0

क्या फ़ाइलों को हटाने के अलावा कोई तरीका है? – zbdiablo

+0

देखें http://wiki.neo4j.org/content/Testing_with_Neo4j#Use_the_ImpermanentGraphDatabase – DNA

1

मुझे लगता है कि neo4j डेटाबेस के साथ निर्देशिका को हटाने का सबसे आसान तरीका है। मैं इसे सभी परीक्षण चलाने के बाद अपने जूनिट परीक्षणों में करता हूं।

public static void deleteFileOrDirectory(final File file) { 
    if (file.exists()) { 
     if (file.isDirectory()) { 
      for (File child : file.listFiles()) { 
       deleteFileOrDirectory(child); 
      } 
     } 
     file.delete(); 
    } 
} 

मैं मैं neo4j विकि पर यह पाया लगता है: यहाँ एक समारोह का उपयोग मैं जहां फ़ाइल neo4j निर्देशिका है। मुझे this discussion में एक और समाधान मिला है। आप Blueprint API का उपयोग कर सकते हैं, जो विधि स्पष्ट प्रदान करते हैं।

1

नावरोथ की तरह, परीक्षण के लिए आपको ImpermanentGraphDatabase का उपयोग करना चाहिए। यह आपकी सभी समस्याओं को बहुत अधिक ठीक करता है।

यदि आप परीक्षण नहीं कर रहे हैं, तो वास्तव में दो तरीके हैं। मेरे पास आमतौर पर मेरे लिए दो विधियां उपलब्ध हैं। एक स्पष्ट डीबी विधि है, जिसमें मैं डीबी पथ को दोबारा हटा देता हूं। मैं इसके लिए FileUtils लाइब्रेरी का उपयोग, और यह काफी कोड की एक पंक्ति है:

FileUtils.deleteRecursively(new File(DB_PATH)); 

एक दूसरे संदर्भ नोड छोड़कर डेटाबेस में प्रत्येक नोड दूर करने के लिए, removeAllNodes विधि का उपयोग कर रहा है।

engine.execute("START n = node(*), ref = node(0) WHERE n<>ref DELETE n"); 

नोट करने के लिए महत्वपूर्ण इससे पहले कि आप एक नया EmbeddedGraphDatabase वस्तु बनाने clearDB विधि कॉल करने के लिए है कि जाता है: इस के लिए एक सरल प्रश्न है, जो आपको इस तरह अमल नहीं है। RemoveAllNodes विधि को तब कहा जाता है जब आपने यह ऑब्जेक्ट बनाया है।

0

वहाँ एक सहायक वर्ग है

Neo4jHelper.cleanDb(db); 

(यह org.springframework.data.neo4j.support.node.Neo4jHelper से आता है और db आप संदर्भ एक GraphDatabaseService है)

तुम भी है इसे डंप करने की क्षमता:

Neo4jHelper.dumpDb(); 
संबंधित मुद्दे