web-dev-qa-db-fra.com

comment importer un fichier Excel (XLSX) dans mongoDB

J'ai un ensemble de données en entrée à donner à MongoDB au format XLSX. Comment suis-je censé importer le fichier Excel en tant qu'entrée dans MongoDB?

Existe-t-il un plugin disponible pour importer des fichiers xlsx en tant qu'entrée dans MongoDB?

19
SUNDARRAJAN K

Vous ne pouvez pas importer un fichier XLSX directement dans MongoDB. Toutefois, avec une feuille de calcul Excel, vous pouvez l’enregistrer en tant que fichier CSV, puis utilisez mongoimport pour l’importer dans MongoDB. Vous pouvez trouver la documentation de mongoimporthere , mais dans tous les cas, la commande à exécuter doit ressembler à ceci:

mongoimport --db myDb --collection myCollection --type csv --headerline --file /path/to/myfile.csv

Dans la commande ci-dessus, l'indicateur --headerline indique que la première ligne de votre fichier contient le nom des champs. Il existe de nombreuses autres options que vous pouvez utiliser en fonction de vos besoins. Celles-ci sont mises en évidence dans la documentation .

45
Juan Carlos Farah

Il existe un paquet d'utilitaires d'extensions pymongo, un des modules y fait exactement cela, importe un fichier Excel dans une collection mongo ou un classeur Excel complet dans une base de données mongo . Vous pouvez trouver une documentation et des exemples ici :
et vous pouvez installer la bibliothèque avec `pip install mongoUtils

  • vous devrez également installer la bibliothèque xldr
  • disclaimer: je suis l'auteur de cette bibliothèque
1
nickmilon

Vous pouvez télécharger des données de plusieurs feuilles d’un Excel à la fois dans mongodb en utilisant ce code.
Votre première ligne, "0", sera considérée comme le titre de la colonne et les données restantes de cette colonne.

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
           DB db = mongoClient.getDB("yourdb_name");
           System.out.println("Connected to Database successfully");
           DBCollection coll = db.getCollection("your_collection name");
           System.out.println("Collection your_collection name selected successfully");

                DBCollection OR = db.getCollection("Input_Container");
                System.out.println("Collection Device_Details selected successfully");
                OR.drop();
                DBObject arg1 = null;
                //coll.update(query, update);
                DBCollection OR_UPLOAD = 
                db.createCollection("Input_Container", arg1);
                String path =" your file path";

                File myFile = new File(path);
                FileInputStream inputStream = new FileInputStream(myFile);
                XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
                int number=workbook.getNumberOfSheets();
                  System.out.println("NumberOfSheets "+number);

                  for(int i=0;i<number;i++)
                  {
                XSSFSheet sheet = workbook.getSheetAt(i);
                int col_value=sheet.getRow(0).getLastCellNum();
                int row_num= sheet.getLastRowNum();
                System.out.println("row_num "+row_num);
                List<String> DBheader = new ArrayList<String>();
                List<String> Data = new ArrayList<String>();

                for(int z=1;z<=row_num;z++){
                     DBheader.clear();
                     Data.clear();
                 for(int j=0;j<col_value;j++)
                {
                    if(sheet.getRow(0).getCell(j).toString()!=null || sheet.getRow(0)!=null)
                    {
                    String cel_value = sheet.getRow(0).getCell(j).toString();
                    DBheader.add(cel_value.trim());
                    }
                    else{
                        break;

                    }
                }
                for(int k=0;k<col_value;k++){
                    String data =" ";   
                    if(sheet.getRow(z).getCell(k)!=null)
                    {
                    data =  sheet.getRow(z).getCell(k).toString();
                    }
                    Data.add(data.trim());

                    }
                BasicDBObject doc = new BasicDBObject();
                System.out.println("Data.size() "+Data.size());

                int l=0;
                for(String headers:DBheader)
                { 
                if(l>Data.size()){break;}
                    doc.append(headers, Data.get(l));
                    l++;
                 }
                OR_UPLOAD.insert(doc);
                }

            }System.out.println("File Upload Done");
                  mongoClient.close();
1
Sumeet Gawas

J'ai utilisé "fast-csv" pour télécharger csv sur la base de données mongoDB.

Exemple de code :

var csv = require("fast-csv");

csv.fromPath('./test.csv',{headers: true})
    .on("data", function(data){
       var details = new Details;
       details=data;
       details.save(function (saveErr, savedetail) {
             if (saveErr) {
                   console.log(saveErr)
             }
        });
    })
    .on("end", function(){
        console.log("done");
    })
1
SUNDARRAJAN K

mongoimport -d admin -c Mongocsv --type csv --fichier Mongocsv.csv --headerline

connecté à: 127.0.0.1 5 objets importés

mongo

utilisez admin commuté sur db admin

db.Mongocsv.find ()

0
arnav

Si le serveur de base de données n’est pas local, vous devrez spécifier l’hôte, le port, le nom d’utilisateur, le mot de passe, ainsi que le nom de la base de données et le nom de la collection.

mongoimport --Host <hostname>:<port> --username <username> --password <password> --db <db name> --collection <collection name> --type csv --headerline --file /path/to/myfile.csv
0
Gokul

Vous pouvez gérer le chargement du contenu du fichier Excel en écrivant du code Java à l'aide de la bibliothèque de POI Apache ( https://poi.Apache.org/ ). La bibliothèque est développée pour travailler avec les données d'application MS Office, y compris Excel. 

J'ai récemment créé l'application basée sur la technologie qui vous aidera à charger des fichiers Excel dans la base de données MongoDB. 

L'application est disponible sous http://www.abespalov.com/ et n'est testée que pour Windows, mais devrait également fonctionner pour Linux. L'application crée automatiquement la collection nécessaire et la remplit avec le contenu du fichier Excel. Vous pouvez exporter plusieurs fichiers en parallèle. Vous pouvez ignorer l'étape de conversion des fichiers au format CSV. L'application gère les formats xls et xlsx. 

Les étapes d'application globales sont: 

1) Charge le contenu du fichier Excel. Voici le code en fonction de l'extension du fichier: 

fileExtension = FilenameUtils.getExtension(inputSheetFile.getName());

if (fileExtension.equalsIgnoreCase("xlsx")) {
        workbook = createWorkbook(openOPCPackage(inputSheetFile));
} else {
        workbook = createWorkbook(openNPOIFSFileSystemPackage(inputSheetFile));
}

sheet = workbook.getSheetAt(0);

2) Établissez la connexion MongoDB. J'utilise la bibliothèque MongoClientURI; 

MongoClientURI mongoClientURI = new MongoClientURI(
                    "mongodb://" + dbUser + ":" + dbPassword + "@" + dbServer 
+ ":" + dbPort + "/" + dbDatabase);
            Excel2db.mongoClient = new MongoClient(mongoClientURI);

3) Parcourez la feuille et insérez des lignes dans la collection. Voici un morceau de code Java: 

Row row = (Row) rowIterator.next();

    //get column names from a header
    short minColIdx = row.getFirstCellNum();
    short maxColIdx = row.getLastCellNum();

    ArrayList<String> columnNameList = new ArrayList();
    String columnName;

    logger.info("The table {} is being populated", tableName);

    //populate a list of column names
    for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) {
        columnNameList.add(row.getCell(colIdx) == null? "": row.getCell(colIdx).toString());
    }

    while (rowIterator.hasNext()) {

        Document document = new Document();
        Row rowData = (Row) rowIterator.next();

        numOfProcessedRows++;
        for (short colIdx = minColIdx; colIdx < maxColIdx; colIdx = (short) (colIdx + 1)) {
            document.put(columnNameList.get(colIdx), rowData.getCell(colIdx).toString());
        }

        //save the document into a collection, point to the database
        MongoCollection mongoCollection = mongoDB.getCollection(tableName);
        mongoCollection.insertOne(document);

    }
}    

Vous trouverez ici tout le code Java de l'application créée pour exporter Excel vers Postgres ( https://github.com/palych-piter/Excel2DB ).

0
Andrey