[PYTHON] Mongodb Kürzeste Einführung (1) Installieren und starten Sie in EC2 und setzen Sie plötzlich Zehntausende ein

Installieren und starten Sie mongoDB & Bulk Insert

Ich wollte es in zwei Zeilen machen. .. Ich hatte auch Mongo in meinem vorhandenen Epel-Repository, aber es hat nicht funktioniert.

~~yum install --enablerepo=epel mongodb-org~~

――Sie sollten das offizielle Repository ordnungsgemäß verwenden ――Die von verschiedenen Personen geschriebenen Repositories werden gesiebt, daher sollten Sie offiziell gehen.

Selbst wenn ich es installieren kann, wird beim Ausführen eine Fehlermeldung angezeigt. /usr/bin/mongod: symbol lookup error: /usr/bin/mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE

Es scheint EC2 zu sein. Ich werde /lib64/libpcre.so.0.0.1 oder so nicht ändern, also ist es besser, aus dem Repository zu gehen http://stackoverflow.com/questions/20872774/epel-mongodb-will-not-start-on-ec2-amazon-ami

Vorsichtig vom Hinzufügen eines Repositorys bis zum Starten

Diesmal habe ich auf die Seite für Amazon Linux verwiesen https://docs.mongodb.org/manual/tutorial/install-mongodb-on-amazon/

Zugabe von yum.repos.d

sudo vi /etc/yum.repos.d/mongodb.repo

[mongodb]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=0

Installation

sudo yum install -y --enablerepo=mongodb mongodb-org

Servicestart

sudo service mongod start

Ja, es ist vorbei.

Konsole starten

mogo

Versuch es

Klicken Sie hier für das offizielle Dokument des Befehls

https://docs.mongodb.org/manual/reference/command/

Daten erstellen Daten im JSON-Format in Honyarara einfügen

Anfangs handelt es sich um eine Datenbank namens test, die mit "dbname" umgeschaltet werden kann. Es scheint ein System zu sein, das gemacht würde, wenn es nicht da wäre. Ich mag so etwas. Ich mag Honyarara, weil es der Name des Datensatzes namens Collection ist

db.honyarara.insert(
   {
     item: "test"
   }
)

Versuchen Sie, die Daten "Honyarara bitte alle" zu finden

db.honyarara.find()

Es war in

Suchen Sie nach einer Person, deren Gegenstand ein Test ist

db.honyarara.find("item":"test")

gefunden.

Fertig!

quit()

Masseneinsatz

Mongo fühlt sich an wie Javascript Masseneinfügung ist ein solcher Befehl

db.collection.bulkWrite(
   [
      { insertOne : { "document" : { name : "sue", age : 26 } } },
      { insertOne : { "document" : { name : "joe", age : 24 } } },
      { insertOne : { "document" : { name : "ann", age : 25 } } },
      { insertOne : { "document" : { name : "bob", age : 27 } } },
      { updateMany: {
         "filter" : { age : { $gt : 25} },
         "update" : { $set : { "status" : "enrolled" } }
         }
      },
      { deleteMany : { "filter" : { "status" : { $exists : true } } } }
   ]
)

Ich kann das mit JSON nicht machen, also entpacke ich das CSV-GZIP und füge Zehntausende von Datensätzen in die Mitte ein.

Masseneinfügung alle 1000 beim Lesen einer gz-komprimierten Textdatei mit Python

Installieren Sie, weil es Pymongo verwendet

pip install pymongo

Führen Sie das Skript aus, das die CSV-Datei liest und in Mongodb speichert

python insert.py "filename.csv.gz"

Oh! Haya! 6 Millionen Fälle, aber es läuft gut

insert.py


# coding: utf-8
import pymongo
import sys
import csv
import gzip
#Holen Sie sich Client
client=pymongo.MongoClient()
#Datenbank abrufen
db=client.test
#Sammlungserwerb
mongo=db.hoge

#Das erste Argument ist der CSV-Dateipfad
infiename=sys.argv[1]
#Liste der Spaltennamen in der Reihenfolge, in der sie sich in der CSV-Datei befinden
keynames=('name','age','gender')
#Masseneinfügung, wenn die angegebene Anzahl erreicht ist, während zur Liste der Zählerelemente hinzugefügt wird
i=0;
items=[]
#Beim Öffnen des gzip
with gzip.open(infiename, 'r') as f:
#Geben Sie beim Lesen der CSV ein Trennzeichen im Trennzeichenteil von an
    reader = csv.reader(f, delimiter=",")
    for row in reader:
#Fügen Sie den Daten in jeder CSV-Zeile einen Spaltennamenschlüssel hinzu, um ein Wörterbuch zu erstellen
        data=dict(zip(keys,row))
#Zur Liste hinzufügen
        items.append(data)
        i=i+1
#Wenn 1000 Fälle akkumuliert sind, blinken und zurücksetzen
        if(i%1000==0):
            result=mongo.insert_many(items)
#Gibt die eingegebene ID zurück
            #print result.inserted_ids
            items=[]
            i=0
#Wenn es am Ende einen Überschuss gibt, setzen Sie ihn ein
if(i>0):
    mongo.insert_many(items)


Recommended Posts

Mongodb Kürzeste Einführung (1) Installieren und starten Sie in EC2 und setzen Sie plötzlich Zehntausende ein
Mongodb Kürzeste Einführung (2) Ich habe nach Zehntausenden gesucht