Как удалить все записи в базе данных в CouchDB?

Есть ли способ удалить все данные из базы данных CouchDB?

То, что я делаю сейчас, это удаление и повторная создание всей базы данных

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

но я не уверен, что это лучший способ сделать это.

Ответ 1

Невозможно удалить данные, кроме удаления каждого документа (или обновления пула известного документа doc-id с помощью _rev=xxx and "_deleted:true" в _bulk)

Удаление и повторное создание в порядке.

Ответ 2

Я нашел этот букмарклет, который добавляет вам функции в представление Futon. Он добавляет, что вы выбираете все, удаляете все кнопки и удаляете флажки delete. Это может быть хорошим началом, но вы можете немного изменить его, поскольку он не работает все время.

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

Ответ 3

В приведенном ниже коде удаляются все базы данных (не все записи!) с помощью Node.js. Вам нужно установить nano и после этого выполнить следующий код:

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

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

Ответ 4

Вот питон script, чтобы выполнить задание:

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

Ответ 5

Я сделал инструмент командной строки для выполнения некоторых операций на моем сервере CouchDB, кроме тех, которые были предоставлены Futon. Он поддерживает удаление, резервное копирование и восстановление документов.

Здесь вы можете найти .

Ответ 6

Вы можете использовать этот плагин db db. Что он делает, это стереть все документы в вашей сумке db. Он может использоваться как на серверных, так и на клиентских приложениях javascript. Вот ссылка: Пакет Db Стереть плагин

Ответ 7

Благодаря ответу amagard я написал небольшой скрипт на Python для удаления всех документов и последующего сжатия базы данных:

import couchdb

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

couch = couchdb.Server("http://%s:%[email protected]: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");

Сжатые мои большие 10 ГБ журналирования базы данных до 40 МБ, но занял всю ночь подряд.