[PYTHON] Mongodb Introduction la plus courte (1) Installer et démarrer dans EC2 et mettre soudainement des dizaines de milliers

Installer et démarrer mongoDB & Bulk Insert

Je voulais le faire en deux lignes. .. J'avais aussi mongo dans mon référentiel epel existant, mais cela n'a pas fonctionné.

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

――Vous devez utiliser correctement le référentiel officiel ――Les référentiels écrits par diverses personnes sont tamisés, vous devriez donc y aller officiellement.

Même si je peux l'installer, j'obtiens une erreur lorsque je l'exécute. /usr/bin/mongod: symbol lookup error: /usr/bin/mongod: undefined symbol: _ZN7pcrecpp2RE4InitEPKcPKNS_10RE_OptionsE

Il semble que ce soit EC2. Je ne vais pas changer /lib64/libpcre.so.0.0.1 ou quelque chose comme ça, il vaut donc mieux partir du référentiel http://stackoverflow.com/questions/20872774/epel-mongodb-will-not-start-on-ec2-amazon-ami

En douceur, de l'ajout d'un référentiel au lancement

Cette fois, j'ai fait référence à la page pour Amazon Linux https://docs.mongodb.org/manual/tutorial/install-mongodb-on-amazon/

Ajout de 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

Début du service

sudo service mongod start

Oui, c'est en place.

Démarrer la console

mogo

Essaye le

Cliquez ici pour le document officiel de la commande

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

Créer des données Mettre les données au format JSON dans honyarara

Au départ, il s'agit d'un DB appelé test, qui peut être commuté avec l'utilisation "dbname" Il semble que ce soit un système qui serait créé s'il n'était pas là. J'aime ce genre de chose. J'aime honyarara parce que c'est le nom de l'ensemble de données appelé Collection

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

Essayez de trouver les données `` honyarara s'il vous plaît tous ''

db.honyarara.find()

C'était en

Recherchez quelqu'un dont l'article est un test.

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

a trouvé.

Fini!

quit()

Insertion en vrac

mongo ressemble à du javascript L'insertion en bloc est une telle commande

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 } } } }
   ]
)

Je ne peux pas faire cela avec JSON, alors je décompresserai le gzip CSV et j'insérerai des dizaines de milliers d'enregistrements en cours de route.

Insertion en masse tous les 1000 lors de la lecture d'un fichier texte compressé en gz avec python

Installer car il utilise pymongo

pip install pymongo

Exécutez un script qui lit un fichier CSV et l'enregistre dans mongodb

python insert.py "filename.csv.gz"

Oh! Haya! 6 millions de caisses, mais ça se passe bien

insert.py


# coding: utf-8
import pymongo
import sys
import csv
import gzip
#Obtenir le client
client=pymongo.MongoClient()
#obtenir la base de données
db=client.test
#Acquisition de collection
mongo=db.hoge

#Le premier argument est le chemin du fichier CSV
infiename=sys.argv[1]
#Liste des noms de colonnes dans l'ordre dans lequel ils sont dans le fichier CSV
keynames=('name','age','gender')
#Insertion groupée lorsque le nombre spécifié est atteint lors de l'ajout à la liste des éléments du compteur
i=0;
items=[]
#Lors de l'ouverture du gzip
with gzip.open(infiename, 'r') as f:
#Lors de la lecture du CSV, spécifiez un délimiteur dans la partie délimiteur de
    reader = csv.reader(f, delimiter=",")
    for row in reader:
#Ajoutez une clé de nom de colonne aux données de chaque ligne de CSV pour créer un dictionnaire
        data=dict(zip(keys,row))
#Ajouter à la liste
        items.append(data)
        i=i+1
#Lorsque 1000 cas sont accumulés, clignote et réinitialise
        if(i%1000==0):
            result=mongo.insert_many(items)
#Renvoie l'ID saisi
            #print result.inserted_ids
            items=[]
            i=0
#S'il y a un surplus à la fin, mettez-le dans
if(i>0):
    mongo.insert_many(items)


Recommended Posts

Mongodb Introduction la plus courte (1) Installer et démarrer dans EC2 et mettre soudainement des dizaines de milliers
Mongodb Introduction la plus courte (2) J'ai recherché des dizaines de milliers