Utilisez le mongoimport utilitaire pour importer des données dans une base de données MongoDB.
MongoDB fournit le mongoimport
utilitaire qui peut être utilisé pour importer des fichiers JSON, CSV ou TSV dans une base de données MongoDB.
mongoimport
est situé dans le répertoire bin (par exemple,
/mongodb/bin
ou là où vous l'avez installé).
Pour importer des données, ouvrez une nouvelle fenêtre Terminal/Invite de commandes et entrez mongoimport
suivi de paramètres tels que le nom de la base de données, le nom de la collection, le nom du fichier source, etc.
Si vous constatez que vous ne pouvez pas exécuter mongoimport , assurez-vous que vous avez soit quitté le mongo ou ouvert une nouvelle fenêtre Terminal/Invite de commandes avant d'exécuter mongoexport , car il s'agit d'un utilitaire distinct.
Importer un fichier JSON
Voici un exemple d'exécution de mongoimport
pour importer un fichier JSON.
Vous vous souvenez peut-être que nous utilisions auparavant mongoexport pour exporter les artistes collection dans un fichier JSON.
Plus tard, nous avons laissé tomber les artistes collection tout à fait.
Maintenant, nous allons réimporter cette collection dans notre base de données.
mongoimport --db music --file /data/dump/music/artists.json
Message résultant :
2016-07-12T13:34:04.904+0700 no collection specified 2016-07-12T13:34:04.905+0700 using filename 'artists' as collection 2016-07-12T13:34:04.911+0700 connected to: localhost 2016-07-12T13:34:04.968+0700 imported 13 documents
Si vous ne spécifiez pas de nom de collection, une collection est créée en fonction du nom du fichier (moins toute extension).
Maintenant, revenons à notre mongo Fenêtre Terminal/Command Prompt et récupérez la liste des collections dans notre base de données :
show collections
Résultat :
artists musicians producers
Nous allons maintenant interroger notre collection ravivée.
db.artists.find()
Résultat :
{ "_id" : 1, "artistname" : "AC/DC" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" } { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" } { "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" } { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" } { "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] } { "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] } { "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } } { "_id" : 4, "artistname" : "Rush" } { "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] } { "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }
Spécifier un nom de collection
Vous pouvez utiliser le --collection
argument pour fournir un nom de la collection dans laquelle les données doivent aller.
Importons un autre fichier, mais cette fois, spécifions un nom de collection :
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json
Message résultant :
2016-07-12T14:09:01.793+0700 connected to: localhost 2016-07-12T14:09:01.849+0700 imported 1 document
Revenez maintenant à mongo et consultez la liste des collections :
show collections
Message résultant :
artists jazz musicians producers
Et enfin, interrogez le jazz collecte :
db.jazz.find().pretty()
Message résultant :
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
Importer un fichier CSV
Vous pouvez importer un fichier CSV en utilisant --type csv
.
Si le fichier CSV a une ligne d'en-tête, utilisez --headerline
dire à
mongoimport
d'utiliser la première ligne pour déterminer le nom des champs dans le document résultant.
Si le fichier CSV n'a pas de ligne d'en-tête, utilisez le --fields
paramètre pour définir les noms des champs.
Avec ligne d'en-tête
Voici un exemple d'importation d'un document avec une ligne d'en-tête.
Le contenu du fichier CSV :
_id,albumname,artistname 1,Killers,"Iron Maiden" 2,Powerslave,"Iron Maiden" 12,"Somewhere in Time","Iron Maiden" 3,"Surfing with the Alien","Joe Satriani" 10,"Flying in a Blue Dream","Joe Satriani" 11,"Black Swans and Wormhole Wizards","Joe Satriani" 6,"Out of the Loop","Mr Percival" 7,"Suck on This",Primus 8,"Pork Soda",Primus 9,"Sailing the Seas of Cheese",Primus
Importez le fichier :
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv
Interroger la collection :
> db.catalog.find() { "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" } { "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" } { "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" } { "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" } { "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" } { "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" } { "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" } { "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" } { "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" } { "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }
Sans ligne d'en-tête
Voici un autre fichier CSV, mais celui-ci n'a pas de ligne d'en-tête :
Mutt Lange, 1948 John Petrucci, 1967 DJ Shadow, 1972 George Clinton, 1941
Nous allons maintenant l'importer et spécifier les noms de champs à utiliser :
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv
Interroger la collection :
> db.producers.find() { "_id" : 1, "name" : "Bob Rock" } { "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 } { "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 } { "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 } { "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }
Vous verrez que l' ObjectId champ a été automatiquement créé et rempli pour nous.
De plus, nous avions déjà un document dans cette collection avant d'exécuter l'importation : { "_id" :1, "name" :"Bob Rock" } . Par conséquent, vous pouvez voir que l'importation a simplement ajouté à la collection (au lieu de la remplacer ainsi que tout son contenu).
Vous pouvez utiliser la même méthode pour importer des fichiers TSV. Utilisez simplement --type tsv
.