Как я могу удалить все записи в базе данных в CouchDB? - PullRequest
11 голосов
/ 12 марта 2012

Можно ли как-нибудь удалить все данные из базы данных CouchDB?

В данный момент я делаю удаление и воссоздание всей базы данных

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

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

Ответы [ 7 ]

8 голосов
/ 09 апреля 2013

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

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

4 голосов
/ 16 августа 2013

Приведенный ниже код удаляет все базы данных (не все записи!), Используя 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 голосов
/ 12 марта 2012

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

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

3 голосов
/ 03 ноября 2017

Вот скрипт Python для выполнения этой работы:

import couchdb
couch = couchdb.Server('http://localhost:5984/')
couchdb = 'DATABASE'
db = couch[couchdb]
for id in db:
    db.delete(db[id])
0 голосов
/ 16 апреля 2019

Благодаря ответу amagard 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");

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

0 голосов
/ 04 ноября 2016

Вы можете использовать этот плагин douch pouch.Что он делает, это стереть все документы в вашей сумке БД.Он может быть использован как на стороне сервера, так и на стороне клиента.Вот ссылка: Плагин Eb Douch Erase

0 голосов
/ 06 февраля 2016

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

Вы можете найти его здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...