如何在CouchDB中删除数据库中的所有记录?

时间:2012-03-12 13:16:31

标签: couchdb

有什么办法可以从CouchDB数据库中删除所有数据吗?

我目前正在做的是删除并重新创建整个数据库

curl -X DELETE http://localhost:5984/foobar
curl -X PUT    http://localhost:5984/foobar

但我不确定这是否是最好的方法。

7 个答案:

答案 0 :(得分:8)

我找到了这个书签,可以为Futon视图添加功能。它会添加选择全部,删除所有按钮和带删除复选框的删除列。这可能是一个好的开始,但你可能想稍微修改它,因为它似乎不能一直工作。

http://www.elijahmanor.com/couch-potato-bookmarklet-lazy-features-for-couchdbs-futon/

答案 1 :(得分:4)

除了删除每个文档(或使用_rev=xxx and "_deleted:true"中的_bulk更新一堆已知文档ID)之外,无法删除数据

删除并重新创建即可。

答案 2 :(得分:4)

下面的代码使用Node.js删除所有数据库(不是所有记录!)。您需要安装nano,然后执行以下代码:

var nano = require('nano')('http://localhost:5984');

nano.db.list(function(err, body) {
  body.forEach(function(db) {
     nano.db.destroy(db);
  });
});

答案 3 :(得分:3)

这是一个执行此任务的python脚本:

import couchdb
couch = couchdb.Server('http://localhost:5984/')
couchdb = 'DATABASE'
db = couch[couchdb]
for id in db:
    db.delete(db[id])

答案 4 :(得分:0)

我创建了一个命令行工具,除了由Futon提供的操作之外,还可以在我的CouchDB服务器上执行一些操作。它支持暂时删除,备份和恢复文件。

你可以找到它here.

答案 5 :(得分:0)

您可以使用此pouch db插件。它的作用是擦除你的数据包db中的所有文件。它可以在服务器端和客户端javascript应用程序中使用。 这是链接:Pouch Db Erase Plugin

答案 6 :(得分:0)

由于amagard的回答,我编写了一个小的Python脚本,用于删除所有文档并随后压缩数据库:

import couchdb

user = "user"
passwd = "pass"
dbName = "databaseName"

couch = couchdb.Server("http://%s:%s@localhost:5984/" % (user, passwd))
db = couch[dbName]

print("start delete and compact routine")
count = 0
while True:
    print("requesting next 100 documents...")
    items = db.view("_all_docs", limit=100)
    if len(items) == 0:
        print("no documents available")
        break;

    for item in items:
        count += 1
        documentID = item.id.encode("utf-8")
        print ("deleting document: %s (count: %d)" % (documentID, count))
        db.delete(db[documentID])

print("deleted %d documents, requesting compact" % (count))
db.compact();
print("finished");

将我的10GB的大型日志记录数据库缩小到40MB,但整夜运行了。