Şu ana kadar eski SQL veritabanlarından CouchDB'ye bazı dönüşümler yaptım. Her zaman biraz farklı bir yaklaşım vardı.
- SQL-DB'nin birincil anahtarını Document-Id olarak kullandım. Bu, yinelenen belgelerden korkmadan tekrar tekrar içe aktarmamı sağladı.
- Toplu içe aktarma yerine sıralı satır içe aktarma yaptım. Hata ayıklamayı kolaylaştırır. İnternet bağlantısı üzerinden saniyede 5-10 ek arasında gördüm. Bu hızlı yıldırım olmasa da benim için yeterince hızlıydı. En büyük veritabanım 20GB toplam 600.000 Belgeler. Satır içi satır içe aktarma sırasında veritabanını şişirir, bu nedenle zaman zaman sıkıştırmayı çalıştırın. Sonra tekrar satırlarınız büyük değilse 15.000 satır çok fazla değil.
My ithal kodu genellikle şuna benzer:
def main():
options = parse_commandline()
server = couchdb.client.Server(options.couch)
db = server[options.db]
for kdnnr in get_kundennumemrs():
data = vars(get_kunde(kdnnr))
doc = {'name1': data.get('name1', ''),
'strasse': data.get('strasse', ''),
'plz': data.get('plz', ''), 'ort': data.get('ort', ''),
'tel': data.get('tel', ''), 'kundennr': data.get('kundennr', '')}
# update existing doc or insert a new one
newdoc = db.get(kdnnr, {})
newdoc.update(doc)
if newdoc != db.get(kdnnr, {}):
db[kdnnr] = newdoc