<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Moinz.de &#187; Python</title>
	<atom:link href="http://moinz.de/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://moinz.de</link>
	<description>Mein Blog über mich, Open-Source und Co.</description>
	<lastBuildDate>Sun, 25 Mar 2012 19:08:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Exporting / Importing couchdb from commandline (v0.1)</title>
		<link>http://moinz.de/2009/05/exporting-importing-couchdb-from-commandline-v01</link>
		<comments>http://moinz.de/2009/05/exporting-importing-couchdb-from-commandline-v01#comments</comments>
		<pubDate>Mon, 11 May 2009 15:37:25 +0000</pubDate>
		<dc:creator>Stephan</dc:creator>
				<category><![CDATA[Das Leben]]></category>
		<category><![CDATA[Couchdb]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://moinz.de/?p=156</guid>
		<description><![CDATA[Seitdem ich von CouchDB gehört habe, fand ich diese Art der Datenhaltung sehr interessant. Wer das Projekt noch nicht kennt: Daten werden als Dokumente über eine REST/HTTP Schnittstelle in Datenbanken abgelegt. Jedes Dokument besteht aus mehreren Feldern, welche beliebig komplexe (JSON-)Daten beinhalten kann. Das Schöne (oder das Biest): Die Daten sind unstrukturiert; d.h. jedes Dokument [...]]]></description>
			<content:encoded><![CDATA[<p>Seitdem ich von <a href="http://couchdb.apache.org/">CouchDB</a> gehört habe, fand ich diese Art der Datenhaltung sehr interessant. Wer das Projekt noch nicht kennt: Daten werden als Dokumente über eine REST/HTTP Schnittstelle in Datenbanken abgelegt. Jedes Dokument besteht aus mehreren Feldern, welche beliebig komplexe (JSON-)Daten beinhalten kann. Das Schöne (oder das Biest): Die Daten sind unstrukturiert; d.h. jedes Dokument kann andere Felder haben als jedes andere. Es gibt kein Schema, welches bestimmte Strukturen in einem Dokument verlangt. Wer dazu wissen will, kann sich ja mal die <a href="http://couchdb.apache.org/docs/intro.html">Einführung</a> anschauen.</p>
<p>Eins der Dinge die mir bisher noch fehlen ist die Möglichkeit des Import und Exports von Daten über die Kommandozeile (oder eine WebGui), weswegen ich mit jetzt mit ein wenig Python selbst geholfen habe.<br />
<span id="more-156"></span></p>
<h2>Installation</h2>
<p>Zum nutzen der Skripte muss Python 2.6 installiert sein (Bei 2.5 fehlen die Module für JSON):</p>
<ol>
<li>Datei aus <a href="http://moinz.de/files/moinz-couchdb/" target="_blank">/files</a> herunterladen</li>
<li>Entpacken</li>
<li>mit <em>$ python setup.py install</em> installieren</li>
</ol>
<h2>Nutzung</h2>
<p><code> zeisss@Saturn:test $ couchdb-export.py -h<br />
Usage: couchdb-export.py [options] [databases]<br />
Options:<br />
-h, --help            show this help message and exit<br />
-s HOST, --server=HOST, --host=HOST<br />
Which server to use<br />
-p PORT, --port=PORT  The port<br />
-d DESTINATION, --destination=DESTINATION<br />
Where to write the files<br />
zeisss@Saturn:test $ couchdb-export.py -s localhost -p 5984 -d .<br />
Backing up localhost:5984 to .<br />
accounts =&gt; ./accounts/<br />
config =&gt; ./config/<br />
domains =&gt; ./domains/<br />
players =&gt; ./players/<br />
rooms =&gt; ./rooms/<br />
zeisss@Saturn:test $<br />
</code></p>
<p>Alle Parameter sind optional und nutzen die oben angegebenen Werte, falls sie weggelassen wurden. Wenn keine Datenbank angegeben wird, wird der Server nach einer Liste der Datenbanken gefragt und es werden alle exportiert. Das Skript erzeugt einen Unterordner pro Datenbank sowie eine Datei pro Dokument, wobei bestehende Dateien überschrieben werden. Die Ordner werden vorher <strong>nicht</strong> geleert.</p>
<p>Das Importieren verläuft ähnlich:<br />
<code><br />
zeisss@Saturn:test $ couchdb-import.py -h<br />
Usage: couchdb-import.py [options] [databases]<br />
Options:<br />
-h, --help            show this help message and exit<br />
-s HOST, --server=HOST, --host=HOST<br />
Which server to use<br />
-p PORT, --port=PORT  The port<br />
-d DIR, --dir=DIR     Where to read the files<br />
-f, --force           Force the creation of documents, even if a given ID<br />
exists<br />
zeisss@Saturn:test $ couchdb-import.py<br />
Importing . to http://localhost:5984 into [u'accounts', u'config', u'domains', u'players', u'rooms']<br />
Database: accounts<br />
Database: config<br />
Importing config/default_domain.json<br />
- Document with this id already exists. Skipping<br />
Importing config/motd.json<br />
- Document with this id already exists. Skipping<br />
Importing config/version.json<br />
- Document with this id already exists. Skipping<br />
Database: domains<br />
Importing domains/Milkyway.json<br />
- Document with this id already exists. Skipping<br />
Importing domains/sol.json<br />
- Document with this id already exists. Skipping<br />
Database: players<br />
Importing players/miro.json<br />
- Document with this id already exists. Skipping<br />
Database: rooms<br />
Importing rooms/sol_start_room.json<br />
- Document with this id already exists. Skipping<br />
Importing rooms/sol_test_room.json<br />
- Document with this id already exists. Skipping<br />
</code></p>
<p>Importiert werden alle Dateien in den Unterordnern (die Unterordner werden als Datenbanknamen angesehen). Die Dokumentid wird aus dem Inhalt der Datei gelesen (Feld: _id). Wurde keine ID gefunden, wird es der Datenbank überlassen, eine ID zu erzeugen. Sollte es bereits ein Dokument mit der ID in der Datenbank geben, wird die Datei übersprungen (Ausnahme: Der Paramter -f führt zum überschreiben des Dokuments).</p>
]]></content:encoded>
			<wfw:commentRss>http://moinz.de/2009/05/exporting-importing-couchdb-from-commandline-v01/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

