如何将excel文件(XLSX)导入mongoDB

时间:2014-08-11 10:50:56

标签: mongodb import import-from-excel

我有一组数据作为输入以XLSX格式提供给MongoDB。我如何将Excel文件作为输入导入MongoDB?

是否有任何插件可用于导入xlsx文件作为MongoDB的输入?

7 个答案:

答案 0 :(得分:48)

您无法直接将XLSX文件导入MongoDB。但是,使用Excel电子表格可以将其保存为CSV文件,然后使用mongoimport将其导入MongoDB。您可以找到mongoimport here的文档,但无论如何,您需要运行的命令应如下所示:

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

在上面的命令中,--headerline标志表示文件中的第一行包含字段的名称。根据您的需要,您还可以使用许多其他选项。这些内容在documentation

中突出显示

答案 1 :(得分:1)

我使用" fast-csv" 将csv上传到mongoDB数据库。

示例代码

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");
    })

答案 2 :(得分:1)

有一个pymongo extention实用程序包,其中一个模块正是如此,将excel文件导入到mongo集合或将完整的excel工作簿导入mongo数据库。 您可以找到文档和示例here
你可以使用`pip install mongoUtils

安装库
  • 您还需要安装xldr库
  • 免责声明:我是此图书馆的作者

答案 3 :(得分:1)

您可以使用此代码一次从一个excel到mongodb upload data of multiple sheets 您的第一行,即“0”行将被视为该列的列标题和休息数据。

{{1}}

答案 4 :(得分:0)

您可以通过使用Apache POI库(https://poi.apache.org/)编写Java代码来处理加载Excel文件内容。该库是为处理包括Excel在内的MS office应用程序数据而开发的。

我最近基于这项技术创建了应用程序,该技术将帮助您将Excel文件加载到MongoDB数据库。

该应用程序在http://www.abespalov.com/下可用,仅针对Windows进行测试,但也适用于Linux。应用程序将自动创建必要的集合,并使用Excel文件内容填充集合。您可以并行导出多个文件。您可以跳过将文件转换为CSV格式的步骤。该应用程序处理xls和xlsx格式。

总体应用阶段是:

1)加载Excel文件内容。以下是取决于文件扩展名的代码:

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

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

sheet = workbook.getSheetAt(0);

2)建立MongoDB连接。我使用MongoClientURI库;

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

3)迭代工作表并将行插入到集合中。这是一段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);

    }
}    

在这里,您可以找到为将Excel导出到Postgres(https://github.com/palych-piter/Excel2DB)而创建的应用程序的所有Java代码。

答案 5 :(得分:0)

如果数据库服务器不是本地服务器,则必须指定主机,端口,用户名,密码以及数据库名称,集合名称。

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

答案 6 :(得分:0)

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

连接到:127.0.0.1 导入5个对象

蒙戈

  

使用admin   切换到数据库管理员

     

db.Mongocsv.find()