【问题标题】:Couchdb: Get all documents from all databases with curlCouchdb:使用 curl 从所有数据库中获取所有文档
【发布时间】:2015-09-23 09:22:55
【问题描述】:

我需要将所有数据库中所有文档的内容保存在一个文件中。我知道我可以使用 curl 从一个数据库中获取所有文档:

curl -X GET http://localhost:5984/dbname/_all_docs?include_docs=true

我为所有数据库尝试这个:

curl -X GET http://localhost:5984/_all_dbs/_all_docs?include_docs=true

但它不起作用。

【问题讨论】:

  • 你在什么环境下运行curl?我认为不可能在一个请求中获取所有文档,因为它会破坏数据,但您可以为它编写一个脚本。
  • 我从终端 (os x) 运行它。

标签: database curl get couchdb


【解决方案1】:

这样的脚本可能会起作用:

#!/bin/bash

string=$(curl -X GET http://localhost:5984/_all_dbs | sed 's/\[//' | sed 's/\]//' | sed 's/\"//g')

IFS=', ' read -a array <<< "$string"

for database in "${array[@]}"
do
    $(curl -X GET http://localhost:5984/$database/_all_docs?include_docs=true >> allData.txt)
done

这会将所有文档的请求发送到每个数据库并将结果附加到 allData.txt,您可能需要以某种方式将数据修复为您喜欢的格式,但您将拥有一切。

sed:s 从第一个 GET 请求中删除 []"

【讨论】:

  • 谢谢!有没有办法将数据库名称保留在文档中?
  • 您可以在 for 循环中添加一行,例如:echo database &gt;&gt; allData.txt 这会将数据库名称添加到您的文件中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-12
相关资源
最近更新 更多