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

如何在CouchDB中删除数据库中的所有记录?,couchdb,Couchdb,有没有办法从CouchDB数据库中删除所有数据 我目前正在做的是删除并重新创建整个数据库 curl -X DELETE http://localhost:5984/foobar curl -X PUT http://localhost:5984/foobar 但是我不确定这是否是最好的方法。除了删除每个文档(或者在\u bulk中使用\rev=xxx和“\u deleted:true”更新一堆已知的文档id)之外,没有其他方法可以删除数据 删除并重新创建是可以的。我找到了这个书签,它可以

有没有办法从CouchDB数据库中删除所有数据

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

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

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

除了删除每个文档(或者在
\u bulk
中使用
\rev=xxx和“\u deleted:true”
更新一堆已知的文档id)之外,没有其他方法可以删除数据


删除并重新创建是可以的。

我找到了这个书签,它可以为Futon视图添加功能。它添加了“全选”、“全部删除”按钮和带有“删除”复选框的“删除”列。这可能是一个很好的开始,但您可能希望对其进行一些修改,因为它似乎并不总是有效


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

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

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

我制作了一个命令行工具,在我的CouchDB服务器上执行一些操作,除了Futon给出的操作之外。目前支持文档的删除、备份和恢复


您可以找到它

您可以使用此Pocket db插件。它所做的是删除您的邮袋数据库中的所有文件。它可以在服务器端和客户端javascript应用程序上使用。
下面是链接:

下面是一个用于执行此任务的python脚本:

import couchdb
couch = couchdb.Server('http://localhost:5984/')
couchdb = 'DATABASE'
db = couch[couchdb]
for id in db:
    db.delete(db[id])
多亏了s的回答,我编写了一个小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");

将我的10GBs大型日志数据库压缩到40MB,但运行了一整晚

URL已更改为如果它是一个开发环境,那么这是它的最佳方法,我也在这样做。如果它不是一个开发环境,并且具有常规访问权限的用户能够做到这一点,那么这将是一个严重的问题。