-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathleveldb_listkeys.go
57 lines (45 loc) · 1.04 KB
/
leveldb_listkeys.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package main
import "fmt"
import "os"
import "github.com/syndtr/goleveldb/leveldb"
func main() {
printUsage := func() {
fmt.Println("Usage: leveldb_listkeys db_folder_path")
}
fileExists := func(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil { return true, nil }
if os.IsNotExist(err) { return false, nil }
return true, err
}
if len(os.Args) == 1 {
fmt.Println("Level/Snappy DB folder path is not supplied")
printUsage()
return
}
dbPath := os.Args[1]
dbPresent, err := fileExists(dbPath)
if !dbPresent {
fmt.Printf("The DB path: %s does not exist.\n", dbPath)
printUsage()
return
}
db, err := leveldb.OpenFile(dbPath, nil)
defer db.Close()
if err != nil {
fmt.Println("Could not open DB from:", dbPath)
printUsage()
return
}
iter := db.NewIterator(nil /* slice range, default get all */, nil /* default read options */)
for iter.Next() {
key := iter.Key()
keyName := string(key[:])
fmt.Println(keyName)
}
iter.Release()
err = iter.Error()
if err != nil {
fmt.Println(err)
}
}